相关疑难解决方法(0)

使用angular2中的app.component.html中的*ngIf更改路由器插座

我正在使用角度2.0决赛.我正在尝试更改主app.component.html中路由器插座的位置.模板正在更新精细显示,除了,我第一次使用router.navigate组件将不会显示在新的路由器插座中,并且没有错误.第二次和每次使用router.navigate后它都能正常工作.

app.component.html的示例模板

   <div *ngIf="authenticated() == false">
      <h1>not logged in</h1>
      <router-outlet>
      </router-outlet>
    </div>
    <div *ngIf="authenticated()">
      <h1>logged in</h1>
      <router-outlet>
      </router-outlet>
    </div>
Run Code Online (Sandbox Code Playgroud)

angular2-template angular2-routing angular

13
推荐指数
2
解决办法
9513
查看次数

Angular 4 - OnDestroy 可以在不触发 OnInit 的情况下运行吗?

只是一个关于两个 Lifecycle HooksOnInit和 的一般问题OnDestroy。正如本文提到的,我一直假设OnInit始终 在.OnDestroy

我有一个例子,ngOnDestroy()我正在停止播放背景音乐。该声音已加载组件的ngOnInit(),并且由于ngOnDestroy()正在运行而未ngOnInit()运行声音对象undefined

代码

ngOnInit() {
    ...

    this.loadSounds();

    ...
}

ngOnDestroy() {
    if (AppSettings.SOUNDS_ENABLED) {
        this.soundService.getSound(Sound.MINI_GAME_BG_MUSIC).fade(0.2, 0, 1500);
    }
}

private loadSounds() {
    this.soundService.loadSound(Sound.MINI_GAME_BG_MUSIC, SoundPathURL.MINI_GAME_BG_MUSIC, true, 0);
}
Run Code Online (Sandbox Code Playgroud)

目前,当ngOnDestroy尝试发出.fade()的声音时,代码失败undefinedundefined当然,我可以通过在执行函数之前检查声音是否存在来轻松解决此问题.fade()。我的假设是,如果ngOnDestroy()运行了,ngOnInit()那么也必须运行 - 我想我错了。

现在,由于这种情况,我认为在ngOnDestroy()我的应用程序中的每个应用程序中,我应该在执行任何操作之前检查正在使用的对象是否是undefined。因此,例如,在取消订阅之前,我应该检查订阅是否为undefined,等等。

我这样的假设正确吗?

angular

6
推荐指数
1
解决办法
2707
查看次数