Angular2:等待服务初始化

前端之家收集整理的这篇文章主要介绍了Angular2:等待服务初始化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_0@
@H_404_0@ @H_301_6@ 有没有办法等待服务初始化以加载其他组件?
我需要在显示组件(需要数据)之前同步加载一些数据,我不想使用promises / observables(使用那些用于异步调用)

ngIf似乎没有削减它(组件加载,即使如果不匹配).

我没有使用路由器(不需要它用于应用程序),所以我不认为@CanActivate在这种情况下是合适的.

有任何想法吗?

@Component({
    selector: 'my-app',directives: [MyDirective],template: `
    <div>
        <div *ngIf="!initialized">Loading...</div>
        <div *ngIf="initialized"><myDirective>should wait for service to be initialized</myDirective></div>
    </div>`
})
export class AppComponent {
    initialized = false;

    constructor(_myService: MyService) {
        this._myService = _myService;
    }

    ngOnInit() {
        this._myService.init()
            .then(() => {
                setTimeout( () => this.initialized = true,2000);
            }
        );
    }
}

解决方法

我不确定我是否正确理解了这个问题,但是从我得到的结果来看,我认为你可以用初始值(占位符)创建一个模型实例,并允许你的组件用这个模型初始化,然后,当你的数据是准备好后,更改模型实例值,这些值将反映到您的组件.

这样,您的组件不需要等待,它只是使用占位符数据,您当然可以在组件内部进行测试,并相应地显示您的模板,当数据从父级准备就绪,更新它时,更新孩子.

我希望这有帮助.

@H_404_0@

猜你在找的Angularjs相关文章