如何通过angular 2中的指令标记访问值

时间:2017-04-04 09:09:45

标签: angular angular-directive angular-components

我的第一个,

   <modal [hero]="imageId"></modal>-->

我的first.component.ts,

 export class CommonComponent  {
     photodata:any;
     imageId:any = '2';
 }

我的model.component.ts,

 @Component({
   selector: 'modal',
   templateUrl: './app/modal/modal.component.html',
   providers: [HeaderClass]
 })

export class ModalComponent implements OnInit  {
    @Input() hero: string;
    console.log(hero)--->Undefined
  constructor(){
   console.log(this.hero)---->undefined
 }
  ngOnInit(){
    console.log(this.hero)---->2
  }
 }

这里当我在ngOnInit上控制它时它显示了值但是当我做同样的方面时它表示undefined。我从firstcomponent访问这个模态组件但是英雄值没有改变它保持相同的值,因为它是在ngOninit()?.任何人都可以帮助我。谢谢。

2 个答案:

答案 0 :(得分:0)

https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#oninit

  

使用ngOnInit()有两个主要原因:

     
      
  1. 在施工后不久执行复杂的初始化。

  2.   
  3. 在Angular设置输入属性后设置组件。

  4.   

答案 1 :(得分:0)

您的代码看起来是正确的。您以正确的方式访问指令值,但您似乎希望在构造函数中设置它。您需要了解的是,您的组件已构建(也称为构造函数),然后已初始化(包括检索@Input属性)。

因此,在undefined执行之前获取ngOnInit()是预期的行为。之后,您的hero变量将设置为输入值。

我可能会错过理解您关于价值保持不变的问题,但只要您不更新imageId变量(以及输入),就没有理由hero应该改变。