2016-12-07 64 views
0

我需要重置我的路由器配置动态 所以我用这个重置路由器的配置不是异步工作 - 角2

//to redirect from AppComponent to LoggedInComponent 
//without changing the path 
this._router.resetConfig([ 
    { 
     path: '', component: LoggedInComponent 
    } 
    ]); 

它在直线代码工作正常通过时,我试图像

异步运行
//af is AngularFire object 
this.af.auth.subscribe(auth=> { 
     if (auth) { 

      this._router.resetConfig([ 
       { 
        path: '', component: LoggedInComponent 
       } 
      ]); 
     } 

     else { 
      this._router.resetConfig([ 
       { 
        path: '', component: NotLoggedInComponent 
       } 
      ]); 

    } 

    }); 

失败 .... 我甚至尝试了无极

const logined = new Promise<Boolean>(
    (resolve, reject) => { 
    this.af.auth.subscribe(auth=> { 
     if (auth) { 
     resolve(true); 
     } 
     else { 
     resolve(false); 
     } 
    }) 

    } 
); 

logined.then((res) => { 
    console.log('Yeyy resolved as' + res); 

     if (res) { 

      this._router.resetConfig([ 
       { 
        path: '', component: LoggedInComponent 
       } 
      ]); 
     } 

     else { 
      this._router.resetConfig([ 
       { 
        path: '', component: NotLoggedInComponent 
       } 
      ]); 


}); 

logined.catch((err) => { 
    console.log('Yeyy Error'); 
}); 
包围它

但它不工作(没有错误,但路由器的配置没有变化)

我这样做的唯一原因是为了维护所有喜欢

www.facebook.com 

同域不是一样要为登录和新用户,但URL不会改变

我不希望它成为像

this._router.resetConfig([ 
      { 
       path: 'loggedin', component: LoggedInComponent 
      }, 
      { 
       path: 'notloggedin', component: NotLoggedInComponent 
      } 
     ]); 

请帮助我。我是Angular2中的一个真正的noob

回答