これは、状態永続化です問題。
- 親ビュー
- 非ビュー関連シングルトンクラス(または静的変数)
- のlocalStorageが持続(おそらく以前のオプションに一致する)
:最も簡単な解決策は、状態を保存することです
最初の方法:親ビューに保存します。
たとえば、あなたがApp
クラス内にキャッシュを作成することができますが:
export class App {
formData = {};
configureRouter(config, router) {
{ route: ["", "dashboard"], [..snip..] settings: { formData: this.formData, icon: 'icon-home' } }
}
}
ビューの中では、あなたがして行うことができます。
activate(params, routeConfig) {
this.formData = routeConfig.settings.formData;
this.icon = routeConfig.settings.icon;
}
そしてHTMLで、ちょうどにバインドformData
:
<input type="text" value.bind="formData.text" />
この種のものは、全体のApp
はそのフォームの周りを回転します。さもなければ、そこにそれを格納することは実際にはあまり意味がありません。
それは、とにかく(私がリストで指摘した最初の)それを行う方法です。
他の方法:シングルトン。
AppState
という名前の新しいクラスを作成してください。
export class AppState {
formData = {};
}
次に、あなたのビューで、あなたはそれをインポートし、注入する必要があります
import { AppState } from './app-state';
export class YourView {
static inject = [AppState];
constructor(appState) {
this.appState = appState;
}
}
そして、あなたのHTMLに、あなたはそうのようにそれをバインドすることができます。
<input type="text" value.bind="appState.formData.text" />
または第3の方法:静的なクラス。
AppState
という名前の新しいクラスを作成してください。
export class AppState {
static formData = {};
}
次に、あなたのビューで、インポートし、それを注入する必要があります インポートから{AppState}」。/ app-state ';
export class YourView {
AppState = AppState;
}
そして、あなたのHTMLに、あなたはそうのようにそれをバインドすることができます:私はすべての私のタブが永続状態になりたいと、彼らが持っている場合、私がしたいいくつかの他のクラスのインスタンスが同様に保つ何
<input type="text" value.bind="AppState.formData.text" />
_Edit:_また、シングルトンではなく、クラス操作のデフォルトの方法 – CountGradsky
シングルトンクラスまたはスタティッククラスを作成して、そのすべてを保持することができます。答えを編集しましょう。 – Travo
他の2つの方法の説明も追加しました。私は個人的に適切に指定されたシングルトンを使用することをお勧めします。 – Travo