- 61 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:03:24.50 ID:PAp5WAI8.net]
- >>56
「解決に至らない問題」というとちょっと違ってて、やりたい事は出来るんだけど、「もう少しシンプルで書きやすく、分かりやすい書き方はないか」と悩んでる。 今やってる事の目的と具体例を出すと、次の様な感じ。 【やりたい事とアプローチ】 コンポーネント間で画面遷移しても画面の状態が保持されるようにしたい。 そこでコンポーネントではなく、サービスにサイトの状態を保持させる。 【具体例】 『component』 ・A.component.ts / html ・B.component.ts / html 『service』 ・test.service.ts public val: any = null; // Aの状態を保持するメンバー変数。 1)TestServiceをA、Bそれぞれのコンストラクタで読み込む。 2)Aのcomponent.tsでデータを取得し、serviceのvalに格納。 this.testService.val = result; // 中身は { res : "OK" } 3)Aのcomponent.html上でデータをバインディングで表示。 {{this.testService.val.res}} 4)AからBに画面遷移。 5)component.tsで、取得したデータをオブジェクトの一部に格納。 var result = { res : this.testService.val.res, num : 123 } 結論としては↑のやり方でAで取得したデータをBで参照する事には成功したが、次の問題が出て来た。 ・TestServiceにもっと多くの変数があると、どの変数がどのページの状態を示すかが分からなくなる。 ・VS Code だとhtml編集時にtsの補完が効かず、htmlのバインディングの構文 {{this.TestService.val.res}} を書くのが面倒。 何かズラズラと書き上げてて、だんだん設計がよろしく無い気がしてきたわ。いっぺん設計を考え直してみるわ。
|

|