首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一组件中编写CanDeactivate函数

在同一组件中编写CanDeactivate函数
EN

Stack Overflow用户
提问于 2016-08-25 16:17:13
回答 2查看 1.9K关注 0票数 0

在angular 2 RC5 router 3.0.0 RC1中,我希望从路由器正在检查的相同组件(或至少相同文件)中调用canDeactivate函数:

代码语言:javascript
复制
{ path: 'componentPath', component: MyComponent, canDeactivate: [CanDeactivateGuard] }

如果CanDeactivateGuardMyComponent在同一个文件中,或者更好的是,CanDeactivateGuard可以是MyComponent,而canDeactivate()函数在MyComponent中(但我不确定这是否可能)

我已经尝试了以下路线:

代码语言:javascript
复制
{ path: 'componentPath', component: MyComponent, canDeactivate: [MyComponent] }

MyComponent

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

@Component({
    selector: 'my-component',
    providers: [],
    templateUrl: 'MyComponent.html',
    directives: []
})

export interface CanDeactivateComponent {
    canDeactivate: () => boolean | Observable<boolean>;
}


export class MyComponent implements OnInit, CanDeactivate<CanDeactivateComponent>  {

    onInit(){
        // MyComponent initialization 
    }

    canDeactivate(component: CanDeactivateComponent): Observable<boolean> | boolean {
        console.log('test');
        return true;
    }


}

但是我得到了以下错误:

代码语言:javascript
复制
index:2 Error: Error: Can't resolve all parameters for MyComponent: (?, ?)
EN

回答 2

Stack Overflow用户

发布于 2016-08-25 16:51:49

你可以从'@angular/router‘实现CanDeactivate

代码语言:javascript
复制
canDeactivate(component: MyComponente, route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    return true;
}

如果你这样做,我认为你不需要路由器配置中的canDeactivate。

重要编辑:这是RC5,我不知道它是否也适用于RC1

票数 0
EN

Stack Overflow用户

发布于 2016-08-25 18:09:41

我知道这很耗时,但还是要升级到RC.5并使用路由守卫。我在这个博客中描述了它们(它使用RC4):https://yakovfain.com/2016/07/20/angular-2-guarding-routes/

来自该博客的代码样例的RCla.版本在这里:https://github.com/Farata/angular2typescript/tree/master/chapter3/router_samples/app

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

https://stackoverflow.com/questions/39140044

复制
相关文章

相似问题

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