繁体   English   中英

Angular 2 - * ngif在从oberservable subscribe进行变量更新时不刷新

[英]Angular 2 - *ngif not refreshing when variable update from oberservable subscribe

在html中我有警告只应在出现像thius这样的错误状态时显示

<div class="alert alert-danger" *ngIf="error">
    <strong>Not saved!</strong> There was an error when saving the project. Please try again later.
</div>

这很好用。 但是当我从一个observable设置值时,ngIf没有得到更新的值。

这里是简化的代码,它始终将错误设置为true以用于测试目的

export class createProjectComponent {
    constructor(private service:ProjectsService){

    }

    model = new myModel();
    error = false;
    submitForm(){    
        this.service.createProject(this.model).subscribe(i=>{
            this.error=true;
          }
    }

有什么样的通知我必须触发?

如果这可以解决您的问题,您可以尝试:

constructor(private cdRef:ChangeDetectorRef) {}

submitForm(){    
    this.service.createProject(this.model).subscribe(i=>{
        this.error=true;
        this.cdRef.detectChanges();
    }
}

如果确实存在,则this.service.createProject(this.model)中会有一些代码导致执行离开Angulars区域。

更新

你不需要这个,如果你使用()=>到处而不是function () ,如果不是像someFunc(mycallback)那样通过名称传递函数,而是使用someFunc(() => mycallback())someFunc(mycallback.bind(this))

发现错误。 this改变了。 在观察中, this指向osbervable不再是组件。

所以我必须得到一个变量的组件引用,并将此引用的错误设置为true。

工作代码如下所示:

var component = this;

this.service.createProject(this.model).subscribe(i=>{
                component.error = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM