質問編集履歴

3

書式の改善

2017/09/20 10:38

投稿

wizz
wizz

スコア7

test CHANGED
@@ -1 +1 @@
1
- 動的に生成したDOM要素にイベントを割り当てたい
1
+ 動的に生成するDOM要素にイベントバインディングを割り当てたい
test CHANGED
File without changes

2

書式の改善

2017/09/20 10:38

投稿

wizz
wizz

スコア7

test CHANGED
File without changes
test CHANGED
@@ -8,13 +8,67 @@
8
8
 
9
9
 
10
10
 
11
+ templateで定義した、
12
+
13
+
14
+
15
+ ```html
16
+
17
+ <button (click)="addInput()">ADD</button>
18
+
19
+ ```
20
+
21
+ は正しく呼び出すことができるのですが、
22
+
23
+ 動的に生成した、
24
+
25
+ ```html
26
+
27
+ <input type="text" (focus)="focusFunc()" />
28
+
29
+ ```
30
+
31
+ は動作しません。
32
+
33
+
34
+
35
+ ChoromeのDeveloper Toolsで確認したところ、以下のように
36
+
37
+ なっていました。
38
+
39
+ ```html
40
+
41
+ <!-- templateで定義 -->
42
+
43
+ <button _ngcontent-c0>ADD</button>
44
+
45
+
46
+
47
+ <!-- 動的に生成 -->
48
+
49
+ <input type="text" (focus)="focusFunc()" />
50
+
51
+ ```
52
+
53
+ イベントバインディングがそのまま表示されてしまっているので、
54
+
55
+ DOMに追加後に何か処理を行わないといけないのでしょうか?
56
+
11
57
  初歩的な質問で申し訳ないのですが、アドバイスをよろしくお願い致します。
12
58
 
13
59
 
14
60
 
15
61
  ###該当のソースコード
16
62
 
17
- ```typeScript
63
+ ```typescript
64
+
65
+ import {
66
+
67
+ Component,
68
+
69
+ } from '@angular/core';
70
+
71
+
18
72
 
19
73
  @Component({
20
74
 
@@ -24,7 +78,7 @@
24
78
 
25
79
  <div id="hoge">
26
80
 
27
- <button (click)="addInput()">ADD</button>
81
+ <button (click)="addInput()">ADD</button>
28
82
 
29
83
  </div>
30
84
 
@@ -42,7 +96,7 @@
42
96
 
43
97
  let divElm = document.createElement('div');
44
98
 
45
- divElm.innerHTML = '<input (focus)="focusFunc()" />';
99
+ divElm.innerHTML = '<input type="text" (focus)="focusFunc()" />';
46
100
 
47
101
  elm.appendChild(divElm);
48
102
 

1

誤って公開してしまったので、更新しました。

2017/09/20 10:27

投稿

wizz
wizz

スコア7

test CHANGED
File without changes
test CHANGED
@@ -2,23 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- ここ質問したいを詳細に書いください
5
+ 動的生成したinputにフォーカスが当たった時にアラートを出したいと考え入るのですが、
6
6
 
7
- (例)PHP(CakePHP)で●●なシステムを作っています。
8
-
9
- ■■な機能を実装中に以下のエラーメッセージが発生しした。
7
+ 呼び出されせん...
10
8
 
11
9
 
12
10
 
13
- ###発生る問題・エラーメッセージ
11
+ 初歩的な質問で申訳なのですが、アドバイスをよろしくお願い致します。
14
-
15
-
16
-
17
- ```
18
-
19
- エラーメッセージ
20
-
21
- ```
22
12
 
23
13
 
24
14
 
@@ -28,24 +18,44 @@
28
18
 
29
19
  @Component({
30
20
 
21
+ selector: 'app-root',
22
+
31
23
  template: `
32
24
 
33
- <div id="hoge">`
25
+ <div id="hoge">
26
+
27
+ <button (click)="addInput()">ADD</button>
28
+
29
+ </div>
30
+
31
+ `,
34
32
 
35
33
  })
36
34
 
37
35
 
38
36
 
37
+ export class AppComponent {
38
+
39
+ addInput() {
40
+
41
+ let elm = document.getElementById('hoge');
42
+
43
+ let divElm = document.createElement('div');
44
+
45
+ divElm.innerHTML = '<input (focus)="focusFunc()" />';
46
+
47
+ elm.appendChild(divElm);
48
+
49
+ }
50
+
51
+
52
+
53
+ focusFunc() {
54
+
55
+ alert('focus!!');
56
+
57
+ }
58
+
59
+ }
60
+
39
61
  ```
40
-
41
-
42
-
43
- ###試したこと
44
-
45
- 課題に対してアプローチしたことを記載してください
46
-
47
-
48
-
49
- ###補足情報(言語/FW/ツール等のバージョンなど)
50
-
51
- より詳細な情報