检测角度值2的变化

时间:2016-11-02 09:59:40

标签: angular angular2-observables

我有一个场景,我需要根据布尔标志在屏幕上渲染div。从服务接收标志的值。

  <div *ngIf="isEnabled()" class="col-sm-3 col-md-2 sidebar">
            <menu-bar></menu-bar>
        </div>

当服务返回布尔值时,isEnabled函数返回null。在订阅服务成功后,有没有办法渲染这个div?

以下是我正在使用的组件:

export class MainAppComponent implements OnInit{

    static enabled : boolean = true;
    license : string;
    errorMessage : string;
    fatalError : boolean;
    mode = 'Observable';

    constructor(private licenseService : LicenceService){}

    ngOnInit(): void {
        this.licenseService.getLicenseInfo()
            .subscribe(info => {
                                if(info) {
                                    SharedService.isLicesePresent = true;
                                } else {
                                    SharedService.isLicesePresent = false;
                                }
                            },
                       error => {
                           this.fatalError = true;
                               this.errorMessage = <any>error;
                               swal({
                                   title: ' Error',
                                   type: 'warning',
                                   text: 'Network Error. Please contact customer support',
                               })

                            });
    }

    isEnabled() : boolean {
        return SharedService.isLicesePresent;
    }
}

1 个答案:

答案 0 :(得分:2)

将observable分配给属性isEnabled并使用异步管道

this.isEnabled = someService.getStatus();
    <div *ngIf="isEnabled | async" class="col-sm-3 col-md-2 sidebar">
        <menu-bar></menu-bar>
    </div>