这只是我试图了解生命周期并尝试在加载组件之前执行一些逻辑,因此我找到了CanActivate
注释。
我想在Component中调用一个函数,所以我需要Component;我注射了它......看起来过于复杂。
// 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)
});
}
}
答案 0 :(得分:2)
实际上,您不能在实例化(或不实例化)组件之前调用注释中的处理。
我想你想将Angular1路由器的解析功能用于Angular2。实际上,还没有支持这样的功能。有关更多详细信息,您可以在Angular github中查看此问题:
以下两个链接为您的用例提供了一些解决方法:
希望它可以帮到你, 亨利