内部の作業ではない角度2 router.navigateは、アプリモジュールを考えると、ネストされたjsの機能
import {Component} from '@angular/core';
import {Router} from "@angular/router";
declare var ExternalJS: any;
@Component({
selector: 'my-app',
templateUrl: 'app/components/login/login.component.tpl.html',
})
export class LoginComponent {
public redirect;
public username: string;
public password: string;
constructor(public _router: Router) {
this.username = 'someUsername';
this.password = 'SomePassword';
}
doLogin() {
var self = this;
ExternalJS.authenticateByUser({username: this.username, password: this.password}, (response => {
self._router.navigate(['/dashboard']);
}));
}
}
それはダッシュボードにナビゲートし
が、ダッシュボードのルートがで消えますurl。
だから私はと左午前:私はhttp://localhost:3001/dashboardが表示されるはずですhttp://localhost:3001/。
Iはself._router.navigate([ '/ダッシュボード'])移動した場合、 js関数の外部で、それは正常に動作します。
UPDATE:関数の外にルート変更を行うには、
正常に動作します:(しかし、私は、JS関数のコールバックにそれを必要とする
doLogin() {
var self = this;
self.goToRoute(); //MOVED TO HERE. WORKING FINE.
/*ExternalJS.authenticateByUser({username: this.username, password: this.password}, ((response:any) => {
self.goToRoute();
})
}));*/
}
UPDATE 3:
がそれを手に入れましたガンターに基づいて作業コメント:
doLogin() {
ExternalJs.authenticateByUser({username: this.username, password: this.password}, (response => {
var self = this;
ExternalJs.setUser(12398787, "user1", function() {
ExternalJs.subscribeEvent({
eventName: 'user.select',
callback: (data => {
self.zone.run(() => {
self._router.navigate(['./dashboard']);
});
})
});
});
}));
}
更新日4: ゾーンを追加した後、ハッシュがまだ消えていました。私はこれをアプリケーションモジュールに追加しました:
providers: [
{provide: LocationStrategy, useClass: HashLocationStrategy}
]
これを修正しました。
いただきましたごルーティングの設定? –
UPPATE 4: ハッシュはまだゾーンを追加した後、イベントをdissappearingました。私はこれをアプリケーションモジュールに追加しました: プロバイダ:[ {提供:LocationStrategy、useClass:HashLocationStrategy} ]、 –