Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度5:视图未更新_Angular_Typescript_Rxjs_Observable - Fatal编程技术网

Angular 角度5:视图未更新

Angular 角度5:视图未更新,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,在我看来,我正在呈现一个技能列表,使用可观察和*ngFor 我使用以下代码检索技能: getSkills(): void { this.skillsDataService.getSkills() .subscribe( skills => this.skills = skills.sort( this.skillSort ) ); } 不过,我已经了解到,最好使用命名函数,不要太多嵌套。因此,我将代码更改为: getSkil

在我看来,我正在呈现一个技能列表,使用可观察和*ngFor

我使用以下代码检索技能:

getSkills(): void {
    this.skillsDataService.getSkills()
        .subscribe(
            skills => this.skills = skills.sort( this.skillSort )
        );
}
不过,我已经了解到,最好使用命名函数,不要太多嵌套。因此,我将代码更改为:

getSkills(): void {
    this.skillsDataService.getSkills()
        .subscribe(
            this.processSkills
        );
}

processSkills(skills: Skill[]): void {
    this.skills = skills.sort( this.skillSort );
}
现在,即使已填充this.skills,视图也不会更新。

当您这样调用时,processSkills中的“this”将不会成为控制器。为了理解我的意思,您应该在processSkills中注销“this”,并学习如何在JavaScript中使用“this”。 为了使代码正常工作,请尝试以下方法:

.subscribe(
        this.processSkills.bind(this)
    );
当您这样称呼它时,processSkills中的“this”将不是控制器。为了理解我的意思,您应该在processSkills中注销“this”,并学习如何在JavaScript中使用“this”。 为了使代码正常工作,请尝试以下方法:

.subscribe(
        this.processSkills.bind(this)
    );

天哪,我相信你是对的。我早该知道。。typescript新手,熟悉javascript。Thnx!(一旦stackoverflow允许,我会接受你的回答)天哪,我相信你是对的。我早该知道。。typescript新手,熟悉javascript。Thnx!(一旦stackoverflow允许,将接受您的答案)