2

我有一个场景,我需要根据布尔标志在屏幕上渲染一个 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;
    }
}
4

1 回答 1

2

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

this.isEnabled = someService.getStatus();
    <div *ngIf="isEnabled | async" class="col-sm-3 col-md-2 sidebar">
        <menu-bar></menu-bar>
    </div>
于 2016-11-02T10:04:03.203 回答