如何有条件地阻止用户导航到 mat-tab-group 中的其他选项卡

2023-12-06

我有一个使用角度材料选项卡组的角度组件。

<mat-tab-group>
  <mat-tab label="First"> <app-comp1></app-comp1> </mat-tab>
  <mat-tab label="Second"> <app-comp2></app-comp2> </mat-tab>
  <mat-tab label="Third"> <app-comp3></app-comp3> </mat-tab>
</mat-tab-group>

在某个选项卡中,用户可以进行一些更改并保存。如果用户进行了一些更改并尝试导航到另一个选项卡而不保存,我想在导航到另一个选项卡之前要求用户确认放弃更改。

有什么办法可以做到这一点吗?


如果今天没有解决方案,那么我可以为您提供一些基于猴子修补的技巧:

模板.html

<mat-tab-group #tabs>
  ...
</mat-tab-group> 

组件.ts

import { MatTabGroup, MatTabHeader, MatTab } from '@angular/material';
...
@Component({...})
export class AppComponent implement OnInit {
  @ViewChild('tabs') tabs: MatTabGroup;

  ngOnInit() {
    this.tabs._handleClick = this.interceptTabChange.bind(this);
  }

  interceptTabChange(tab: MatTab, tabHeader: MatTabHeader, idx: number) {
    const result = confirm(`Do you really want to leave the tab ${idx}?`);

    return result && MatTabGroup.prototype._handleClick.apply(this.tabs, arguments);
  }
}

NG 运行示例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何有条件地阻止用户导航到 mat-tab-group 中的其他选项卡 的相关文章

  • viewChild如何获取Angular2中添加了js的元素?

    如果一个 HTML 元素已添加到 DOM 中 例如单击按钮后 我们如何访问该元素 viewChild 看不到它 更新1 更多说明 我用过 jquery 数据表 jquery dataTablesdefineTyped 版本 https gi
  • 在 pre 标签内电子加载 html

    我最近创建了一个电子 角度应用程序 它在内部运行以下内容main ts win loadURL url format pathname path join dirname dist index html protocol file slas
  • “mat-card” 不是 Angular 7 中的已知元素

    我看到了很多关于此的问题 但似乎与我遇到的问题不同 我刚刚创建了我的第二个角度项目 我下面有一个新组件src app employees我试图在employees component html 中使用 我收到的错误是 Uncaught Er
  • 如何在cypress测试中实现拖放?

    我正在努力测试拖放Cypress https www cypress io and 角度材质拖放 https material angular io cdk drag drop overview 因此 我们的目标是将 开始工作 从 待办事项
  • Angular 4 在 APP_INITIALIZER 中注入路由

    我正在尝试检索 APP INITIALIZER 中 url 中存在的数据 应用程序模块 ts export function init config ConfigService router Router return gt config
  • Angular 6 HTTP 客户端发布 - 错误请求

    我有以下问题 我有一个 API 所在的服务器 我将请求发送到注册端点 但作为响应 我收到 400 错误请求错误 指出必须填写姓名 电子邮件等 问题是它们已经满了 我不再怀念创意了 我的代码 import Component from ang
  • 具有动态名称的 Angular Material 2 日期选择器

    我正在尝试实现具有动态名称的日期选择器组件 我正在使用 Angular 4 开发基于 Angular Material 2 的项目 这是我的实现
  • Mat-table 多行内的多行

    我想要的内容如下图所示 我使用 Angular Material 7 x 并使用 Mat Table 实现 如下所述 https material angular io components table overview https mat
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是
  • 将 Angular v12 升级到 v13 时出现“模块未找到”错误

    嗨 开发者和贡献者 我正在努力找出以下错误的问题所在 src app models type ModelType ts 2 0 44 错误 找不到模块 错误 导出字段无法解析目录 请求为 当我将 Angular 版本从 v12 升级到 v1
  • 类型错误:无法读取未定义的属性“post”

    嗨 我只想使用一个简单的功能 http post 将我的日期发布到页面 我希望服务器能够获取我发布的日期 import Component OnInit from angular core import MarginServcies fro
  • 如何检查 Angular 7 中的输入字段是否处于焦点[重复]

    这个问题在这里已经有答案了 我有一个表单 我想知道表单中的任何输入字段是否获得焦点 我读了 NgForm 文档但没有找到任何相关的 focus I found touched但它不能满足需求 您可以使用焦点和模糊事件来跟踪字段获得或失去焦点
  • Angular 7 向原语添加扩展方法

    我想向原语添加一些方法 我有以下文件 字符串扩展 ts interface String isNullOrEmpty this string boolean String prototype isNullOrEmpty function t
  • 如何为角度中的备用列添加背景颜色

    我使用角度材料垫桌子组件创建了一个简单的角度桌子 使用下面的样式我可以为备用行着色 但是当我将下面的样式中的行更改为列时 这不适用于列 mat row nth child even background color f2f4f7 mat r
  • 在 Angular 中导入和使用 lodash 的正确方法

    我曾经能够通过如下所示的 import 语句在 Angular 中使用 lodash 方法 import debounce as debounce from lodash 我现在在使用该语句时收到以下错误 node modules type
  • 从 firestore 返回嵌套集合作为 angularfire2 和 firebase 的对象

    假设您有以下结构 shopping carts collection shopping cart 1 doc dateCreated field items collection shopping cart 2 doc dateCreate
  • 如何在Electron App中调用C# dll方法?

    我有一个电子应用程序 可以从读卡器读取信用卡详细信息 他们提供了一个 c dll 来与应用程序交互 我不知道如何从电子应用程序读取 dll 方法 首先使用以下命令检查 dll 中公开的函数依赖步行者 http www dependencyw
  • 使用 Javascript 在前端创建基本 URL(开发、API 和生产)

    无论开发和部署如何 如何制作适用于 http https localhost 端口和实际域的基本 url 我想创建一个可以在所有场景或条件下工作的基本 url 无论 http https 协议 端口 本地主机和实际域如何 无论是在开发中还是
  • Angular 中的动态子组件

    我正在构建一个具有一致的元素列表设计模式的应用程序 如果我有一个 A 类型的对象 我会创建AComponent它接受a作为输入 然后创建另一个组件来迭代 A 列表 AListComponent 那么如果我有一个对象 B 我需要做同样的事情
  • For-each 在 ionic2 和 angularjs2 中

    我用 IONIC 2 Beta 版本制作了一个应用程序 我想用for each环形 是否可以在 Angular V2 中使用每个 Thanks 首先在Component 您必须声明要显示的数组 import Component from a

随机推荐

  • 苹果 bonjour 安卓版

    我正在寻找适用于 Android 的 Apple bonjour 有推荐的罐子吗 我在 google 上搜索了 apple bonjour 应用程序 找到了 Jmdns 应用程序http home heeere com tech andro
  • Google Api 客户端已使用 id 0 进行管理

    我想连接GoogleApiClient在活动中 当用户第一次单击按钮并出现此对话框时 它工作正常 但是当用户按后退按钮并重新单击负责初始化的按钮时 它工作正常GoogleApiClient 我收到此错误 java lang IllegalS
  • 如何防止同一分支并行运行 GitHub 操作(包括拉取请求)?

    我有一个 GitHub 操作 它可以从分支 拉取请求或手动触发 我想实现以下目标 决不能有两个从同一分支并行运行的操作实例 包括来自该分支的拉取请求 我最好的想法是这样做 伪代码 concurrency if github head ref
  • 当我在 SQL 2005 中删除聚集主键时会发生什么

    我有一个 PK 约束 两列上的聚集索引 我正在删除它 一小时后该命令仍在运行 我本以为 由于我只是删除一个约束 所以操作几乎是瞬时的 有人可以向我解释一下当我放弃 PK 时到底发生了什么吗 聚集索引不仅仅是 一种约束 它是一种存储方法 当您
  • 使用 ASP.NET .ashx 模块下载文件

    我有 ASP NET 页面 上面有一个 iframe 用于在此页面上显示一些 pdf 报告 当用户从下拉列表中选择报告类型时 我将所需的报告数据添加到 ASP NET 会话中 并将 iframe 的属性 src 更改为生成 pdf 报告的
  • 如何解决pandas中由于chunksize而导致的错误?

    我正在尝试读取一个大的 csv 文件并运行代码 我使用块大小来执行相同的操作 file data csv df pd read csv file sep header 0 iterator True chunksize 1000000 dt
  • 简单的 ASP.Net 消息框?

    我想要一个简单的 ASP Net MessageBox 但我尝试的所有方法都不起作用 我不知道为什么 我尝试的最后一件事是this但它也不起作用 对于一个安全工作的简单消息框有什么想法吗 了解更多信息 我无法将任何内容绑定到按钮 我必须从背
  • 选择/选项中的光标错误,IE

    当文本位于选项下方时 我遇到选项光标错误的问题 通常 该选项使用 默认 光标 但是当例如 该段落位于选项下 在 IE 中我看到 文本 光标 Code
  • Xamarin - 将图像转换为字节数组

    我使用媒体插件从 Android 设备或 iOS 设备拍摄或挑选照片 然后我想使用 LINQtoTwitter 将该图像发布到 Twitter 上 为此 图像需要采用 bytes 格式 如何将图像转换为字节以便上传 获取图像的代码 take
  • 如何从当前系统日期中减去 45 天 [重复]

    这个问题在这里已经有答案了 可能的重复 有人知道使用java日历减去X天的日期的简单方法吗 Hi 有人能告诉我如何从当前系统日期中减去 45 天吗 Thanks 您可以使用日历类 Calendar cal Calendar getInsta
  • 按键及其项目过滤对象

    我有一个对象 我想过滤它的键 我试图通过 ID 过滤对象 如下所示 let myKeys Object keys data filter function key console log data key if parseInt key p
  • entityManager.persist 不将任何内容保存到数据库

    I use Spring 4 2 5 and org hibernate 5 1 0 当我使用entityManager persist user 保存user 它无法保存到数据库 并且不会抛出错误 但如果我添加entityManager
  • 如何使用相机 xamarin Forms android 拍摄多张照片

    我正在开发 Xamarin 表单应用程序 在其中 我尝试使用具有相同意图的相机拍摄多张照片 不使用任何nuget包裹 为此 我正在关注此链接Camera MainActivity cs static readonly File file n
  • 提供 .json 文件下载

    我正在尝试通过此函数提供 json 文件 问题是 每次我发出请求时 浏览器都会显示内容而不是下载文件 我认为这可能是由于我正在使用 read 作为 HttpResponse 对象构造函数的参数 但是 如果我仅使用文件对象 则会出现以下异常
  • 使用 Magick(在 R 中)通过变换处理多个图像

    我需要自动化一些图像转换来执行以下操作 读取 16 000 多张又短又宽的图像 尺寸不一样 将每个图像重新缩放至 90 像素高 在图像的宽度上裁剪 90 像素 因此在 1 个图像上进行多次 90x90 裁剪 然后对下一个图像重复一遍 每个9
  • 使用 LINQ 从 XML 读取所有节点

    我有一个 XML 文件 如下所示
  • 通过 Word Interop 打印的文档立即从打印队列中消失

    我有一个 C WinForm 应用程序 它通过将文本放置在书签上来打开并填写 MS Word dotx 模板 然后尝试打印它 所有操作均使用 MS Word Interop 15 一切似乎都很顺利 打印对话框显示并完成 打印作业显示在打印队
  • jQuery 相当于获取 Canvas 的上下文

    我有以下工作代码 ctx document getElementById canvas getContext 2d 有什么方法可以重写它来使用 这样做会失败 ctx canvas getContext 2d Try canvas 0 get
  • Elixir:惯用地克隆列表

    我总是可以做这样的事情 new list Enum map old list fn x gt x end 当然 还有十几种更平等或稍微不那么丑陋的方法可以做到这一点 不知何故 我找不到复制列表的惯用方法 肯定有办法的 Elixir 是一种不
  • 如何有条件地阻止用户导航到 mat-tab-group 中的其他选项卡

    我有一个使用角度材料选项卡组的角度组件