2つのdiffコンポーネントで使用するサービスがあります。1つはページ設定のボタン、もう1つはサイドバーです。これらの2つのコンポーネントは同じレベルにあります。 問題は、ボタンコンポーネントではメソッドが機能しますが、サイドバーで使用すると機能しないことです。2つの異なるコンポーネントでAngular 4サービスからメソッドを実装する
サービス
public navigate(action: string) {
if (typeof this.ACTIONS[action] === 'undefined')
return;
let shift = this.ACTIONS[action];
this.setCurrent(shift);
const curr = this.getCurrent();
this.activeIndex = curr.index;
return this.router.navigate([curr.name]);
}
public setDisableFirst() {
const curr = this.getCurrent();
if(curr.index == 0) {
return true;
}
}
public setDisableLast() {
const curr = this.getCurrent();
return ((curr.index + 1) == (this._pages.length)) ? true : false;
}
public setActiveIndex() {
const curr = this.getCurrent();
return 'done-' + curr.index;
}
ボタン
public disableFirst() {
return this.PrevNextService.setDisableFirst();
}
public disableLast() {
return this.PrevNextService.setDisableLast();
}
<button type="button" (click)="navigate('PREV')" [disabled]="disableFirst()">
<button type="button" (click)="navigate('NEXT')" [disabled]="disableLast()">
サイドバー
public activeClasss() {
return this.PrevNextService.setActiveIndex();
}
<div class="list-group-wrapper" [ngClass]="activeClasss()">
私はサービスのメソッド内でこのconst curr = this.getCurrent();
をログコンソール場合:移動、setDisableFirst、setDisableLast、私が手nexをクリックしたときの正確なページ番号(1,2,3など)ボタンコンポーネントから戻ることができます。
サービスの最後のメソッドsetActiveIndexは、上記のメソッドと同じ変数を使用します。ここで、サービスでは、コンソールログconst curr = this.getCurrent();
が私が今いる最初の(1)ページだけを取得します。次のボタンまたは前のボタンをクリックし続けると、このconstは同じままです(1)。
私は角度4を使用しています。なぜ誰かがこの現象を起こすのか考えてください。
あなたの 'this.getCurrent()'メソッドはどのように見えますか? –
私の実際のページを教えてくれます。コンストラクタでは、私はthis._current = this._pages.find((page)=> { return this.router.url === page.name; }); 'を返し、次に関数を宣言します:' public getCurrent (){ \t \tこれを返します。 \t} ' –
does_pages.find()は何をしますか?関連性の高いコードを入力してください。 –