如何访问Angular2中注释内部的组件?

时间:2015-12-26 02:15:43

标签: javascript typescript angular angular-routing

这只是我试图了解生命周期并尝试在加载组件之前执行一些逻辑,因此我找到了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)
      });
    }

}

1 个答案:

答案 0 :(得分:2)

实际上,您不能在实例化(或不实例化)组件之前调用注释中的处理。

我想你想将Angular1路由器的解析功能用于Angular2。实际上,还没有支持这样的功能。有关更多详细信息,您可以在Angular github中查看此问题:

以下两个链接为您的用例提供了一些解决方法:

希望它可以帮到你, 亨利