新しいパラメータでコンポーネントをルーティングすると、コンポーネントが再初期化されるという問題があります。ここに私のルートがあります。パラメータ2を使用した角度2のルートonInitコンポーネントを再初期化する
const appRoutes: Routes = [
{ path: '', component: MyNewComponentComponent },
{ path: 'tiles', component: DisplayTileData },
{ path: 'tiles/:master/:filters', component: DisplayTileData }
];
"タイル"にルーティングし、サービスコールを実行してデータを取得します。次に、「マスター」と「フィルタ」の値を持つ同じコンポーネントに戻ってくる2つのボタンがあります。パラメータを使用してコンポーネントにルーティングすると、コンポーネントが再初期化され、サービスコールが繰り返されます。私はまた、ページ上にテキスト入力を持っています。このコンポーネントに最初にルーティングしてテキストを追加すると、パラメータを含むルートもそのテキストを消去します。
<a *ngFor="let tile of tiles">{{tile.id}}</a><br/><br/>
<input class="form-control" maxlength="30" minlength="3" name="from" ng-reflect-maxlength="30">
<button (click)="addNumberToFilter(15)"></button>
<button (click)="addNewMasterPath('do')">add new Number to Filter</button>
新しいパラメータでルーティングするときにこのルートの再初期化を防止する方法はありますか?
私はボタンのデフォルト値を持っています。ここにメソッドがあります。
public variable: any = [3,4];
public master: any = 'eat';
addNewMasterPath(newMasterVariable) {
this.master = this.master + '-' + newMasterVariable;
var newMap = this.variable.map(items => { return items}).join('-');
this.router.navigate(['tiles/', this.master, newMap]);
}
addNumberToFilter(newParameter) {
this.variable.push(newParameter);
var newMap = this.variable.map(items => { return items}).join('-');
this.router.navigate(['tiles/', this.master, newMap]);
}
実際の設定とマージングを行うメソッドを投稿できますか?テンプレートから、2つの値を個別に設定できるので、それをどのように扱っているのか不思議です。 – MikeOne
[Angular2 - ルートをトリガーせずに位置を変更する]の重複の可能性があります(http://stackoverflow.com/questions/34876663/angular2-changing-location-without-triggering-a-route) – dparsons
hmm ...右。 this.router.navigate(['tiles /'、this.master、newMap]);働いていた。しかし、同じ問題に直面しています。 'this.router.navigateByUrl( '/ team/33/user/11');で動作します – Gary