Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
268 views
in Technique[技术] by (71.8m points)

Angular 2: when i change a variable in a promise.than in ngOnInit the view doesn't refresh

I created a short example of an Angular 2 application built with NativeScript, what I expect is the variable foo to be "foo" at the beginning, then the ngOnInit() first change it to "bar" and then the promise return and I should see "foobar" in the Label, but instead I see "bar".

The execution is as expected as I can see in the logs:

JS: afterBar
JS: promise new
JS: promise than

component.ts

foo:String="foo";

ngOnInit() {
    this.foo = "bar";
    console.log("afterBar");

    var promise = new Promise((resolve)=>{
        resolve(42);
        console.log("promise new");
    });

    promise.then(x=> {
        this.foo="foobar";
        console.log("promise than");
    });
}

The app view:

<Label [text]='foo'></Label>

how can I change the Label text in a promise an see it "refreshing" into the app view?

SOLVED:

I solved the problem by forcing an update

import { ChangeDetectorRef } from '@angular/core';
    [...]
constructor(
    [...],
    private ref: ChangeDetectorRef) {       
}

[...]
this.ref.detectChanges();
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...