【发布时间】:2016-03-31 19:03:49
【问题描述】:
这只是我试图了解生命周期并尝试在加载组件之前执行一些逻辑,因此我找到了CanActivate Annotation。
我在组件中有一个要调用的函数,因此我需要该组件;我已经注入了它......它似乎过于复杂。
// HomeComponent Component
@Component({
selector: 'HomeComponent',
template: '<h2>HomeComponent Us</h2>'
})
@CanActivate((next,prev) => {
let injector: any = Injector.resolveAndCreate([HomeComponent]);
let theComponent: HomeComponent = injector.get(HomeComponent);
return theComponent.canActivate(next,prev)
})
class HomeComponent {
data = {}
myresolver: any
constructor() {
console.log("in constructor", this.data)
}
setData(data: any) {
this.data = data
}
canActivate(nextInstr, currInstr) {
console.log("in my resolver");
var that = this;
return new Promise(function(resolve, reject) {
setTimeout(function() {
var data = { data: "Aaron" };
that.setData(data)
resolve(data);
}, 2000)
});
}
}
【问题讨论】:
-
好吧,如果您查看angular.io/docs/ts/latest/api/router/CanActivate-var.html 的文档说明,它清楚地提到了原因,并且说得通。 CanActivate 在组件被实例化之前被调用,因此在组件内部调用函数似乎是不正确的。
标签: javascript typescript angular angular-routing