私は基本的にすべて同じものを使用している3つのコンポーネントDataService
を持っています。同じデータのためではなく、全く同じ方法とパターンのためです:角2ルートを変更するときにサービスインスタンスを維持する
@Component({
templateUrl: './data-list-1.html',
})
export class DataOne {
constructor(private dataService:DataService) {
}
}
@Component({
templateUrl: './data-list-2.html',
})
export class DataTwo {
constructor(private dataService:DataService) {
}
}
@Component({
templateUrl: './data-list-3.html',
})
export class DataThree {
constructor(private dataService:DataService) {
}
}
私はルート経由でコンポーネントを切り替えることができます。したがって、1つの質問は、どのようにコンポーネント内の異なるDataServicesの状態を保持することができるかということです。彼らは自分のデータと、それらすべてが自分のインスタンスを持っているのDataServiceの同じパターンを持っているものの、今
@Component({
templateUrl: './data-list-1.html',
})
export class DataOne {
constructor() {
this.dataService = new DataService();
}
}
@Component({
templateUrl: './data-list-2.html',
})
export class DataTwo {
constructor() {
this.dataService = new DataService();
}
}
@Component({
templateUrl: './data-list-3.html',
})
export class DataThree {
constructor() {
this.dataService = new DataService();
}
}
:それぞれが異なるデータを保持しているので、私の知る限りでは、それは、DataService
の異なるインスタンスが必要です。しかし、今のところ一つの問題は解決されていません。ルートを変更したときにDataServiceのインスタンスを保持するにはどうすればよいですか?
':各コンポーネントと、それは子供たちがサービスのそこに自身のインスタンスを取得していますが、あなたがそうのようなコンポーネントレベルのサービスを提供したいと思うように
は、サービスを指定するにはDataService'?ルートを変更したときにルータによって追加されたり削除されたりしたコンポーネントにサービスを提供すると、そのサービスインスタンスも破棄されて再作成されます。親コンポーネントで提供する必要がありますが、ルーティングされたコンポーネントが同じ親に追加されると衝突します。 –
@GünterZöchbauerすべてのコンポーネントは同じモジュールに属します。それがDataServiceを提供する場所です。 –
モジュールで提供すると、遅延ロードされたモジュールを除く別のインスタンスを持つことができず、状態は失われません。 –