回答編集履歴

1

全体的に加筆を行なった

2020/06/26 02:32

投稿

miyabi_pudding
miyabi_pudding

スコア9555

test CHANGED
@@ -17,3 +17,81 @@
17
17
  }
18
18
 
19
19
  ```
20
+
21
+
22
+
23
+ # 追記
24
+
25
+
26
+
27
+ また、ちょいちょい構文がおかしいので、そこも解消すれば治るかもしれません。
28
+
29
+ `User`クラスに関しても、特にメソッド定義などがなければ、
30
+
31
+ `interface`で十分かと思います。
32
+
33
+ (下記構文では、閉じてないことから、メソッドなどがあることを想定してクラスのままにしておきます)
34
+
35
+
36
+
37
+ ```typescript
38
+
39
+ //User.ts
40
+
41
+ // User
42
+
43
+ export class User {
44
+
45
+ id: number = 0;
46
+
47
+ name: string = '';
48
+
49
+ // 型付きなら、[](これだと配列オブジェクトになってしまう)ではなく、{}とし、初期化代入には、同型(同じプロパティを有する)のオブジェクトの代入が必要
50
+
51
+ area: Area = {id: ''};
52
+
53
+
54
+
55
+ // 他にも定義などが続く想定
56
+
57
+ }
58
+
59
+
60
+
61
+ export interface Area {
62
+
63
+ id: string;
64
+
65
+ // プロパティがない事を許容する
66
+
67
+ locality?: string;
68
+
69
+ }
70
+
71
+ // あと、TypeScriptは、文末に";"はつけた方がいいかも。(一応セミコロンレスには対応しているが)
72
+
73
+ ```
74
+
75
+
76
+
77
+ あと、根本的な原因として、テンプレートにて、`user.area`が`null`なのに、そのプロパティを呼び出そうとしてる、
78
+
79
+ だったようですね。
80
+
81
+ 私の見落としでした。
82
+
83
+ 下記のように、`user`に`area`、`locality`がある場合に表示に、変更したらどうでしょうか。
84
+
85
+
86
+
87
+ ```html
88
+
89
+ <div>
90
+
91
+ <!-- とにかく、user.area.localityが存在する場合に、それを表示、という構文に変更 -->
92
+
93
+ {{ user.area.id}}, {{ typeof user.area !== undefined && typeof user.area !== null && typeof user.area.locality !== undefined && typeof user.area.locality !== null ? user.area.locality : '' }}
94
+
95
+ </div>
96
+
97
+ ```