首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为子组件启用candeactivate

为子组件启用candeactivate
EN

Stack Overflow用户
提问于 2019-05-17 19:46:50
回答 2查看 3.5K关注 0票数 3

我在一个angular应用程序上工作,如果用户在编辑时留下未保存的更改,我需要显示一条警告消息。

我已经为此在路由中创建并注册了candeactivate卫士,它在父组件中运行良好。而不是使用子组件.How来解决这个问题?

代码语言:javascript
复制
{
    path: 'create',
    component: CreateComponent,
    canDeactivate: [ConfirmationGuard],
},
{
    path: ':id',
    component: ViewUserComponent,
    children: [
        {
            path: ':id',
            component: AddressComponent,
            canDeactivate: [ConfirmationGuard],
        },
    ],
    canDeactivate: [ConfirmationGuard],
},

“‘create”运行正常,但addresscomponent不工作,因为它是一个子组件!

ConfirmationGuard.ts:

代码语言:javascript
复制
import { Component } from '@angular/core';
import { CanDeactivate } from '@angular/router';
import { ConfirmLeaving } from './interface';

 export declare class ConfirmationGuard implements 
 CanDeactivate<ConfirmLeaving | Component> {

 canDeactivate(component: ConfirmLeaving | Component): Promise<boolean>;
 }
EN

回答 2

Stack Overflow用户

发布于 2019-05-21 22:28:40

ConfirmationGuard需要是一个实际的服务...换句话说,它必须是@Injectable的,并且在一个模块中提供(或者您可以使用providedIn: root)。

票数 0
EN

Stack Overflow用户

发布于 2019-09-17 18:21:56

如果AddressComponent有一个模块,您可以在@NgModule中imports部分下导入它自己的模块,以确保您已经导入了它的所有导入、声明或提供程序

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56185789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档