代码之家  ›  专栏  ›  技术社区  ›  naveen

如何更新角度属性?

  •  0
  • naveen  · 技术社区  · 6 年前

    一段时间后我试图更新属性。但它不是 reflecting 为什么?

    这是我的代码:

    https://stackblitz.com/edit/angular-grjd1u?file=src%2Fapp%2Fhello.component.ts

    ngOnInit(){
        this.ls = "dddd"
         setTimeout(function(){ 
          this.name ="helllllll"
         }, 3000);
      }
    

    我想更新我的 name 之后的属性 3 秒。但它没有更新。

    为什么变更检测不起作用?

    3 回复  |  直到 6 年前
        1
  •  0
  •   Abel Valdez    6 年前

    您需要实现接口 OnChanges 获取名称引用并在var中进行更改 name 此函数在 ngInit ngOnChanges 当你使用 @Input() 装饰工 demo

    ngOnChanges(changes: any): void {
      this.ls = "dddd"
         setTimeout(() => { 
        this.name = "helllllll"
      }, 3000);
    
    }
    
        2
  •  1
  •   matmo    6 年前

    因为在你的回电中 setTimeout , this Window 对象,而不是组件实例。您可以使用一个箭头函数来解决这个问题,该函数绑定 对于声明函数的上下文:

    ngOnInit(){
       this.ls = "dddd"
       setTimeout(() => { 
          this.name = "helllllll"
       }, 3000);
    }
    
        3
  •  0
  •   Fouad Messaia    6 年前

    使用可观察的:

    // Create observable
    const myObservable = new Observable((observer) => {
        setInterval(() => observer.next({ name: 'John Doe', time: new Date().toString() }), 3000);
    })
    
    // Subscribe to the observable
    myObservable.subscribe((x: any) => {
        this.name = `${x.name}, Time: ${x.time}`;
    });
    

    https://stackblitz.com/edit/angular-ce3x4v