質問編集履歴
3
書式の改善
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
動的に生成
|
1
|
+
動的に生成するDOM要素にイベントバインディングを割り当てたい
|
body
CHANGED
File without changes
|
2
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,15 +3,42 @@
|
|
3
3
|
動的に生成したinputにフォーカスが当たった時にアラートを出したいと考えて入るのですが、
|
4
4
|
呼び出されません...
|
5
5
|
|
6
|
+
templateで定義した、
|
7
|
+
|
8
|
+
```html
|
9
|
+
<button (click)="addInput()">ADD</button>
|
10
|
+
```
|
11
|
+
は正しく呼び出すことができるのですが、
|
12
|
+
動的に生成した、
|
13
|
+
```html
|
14
|
+
<input type="text" (focus)="focusFunc()" />
|
15
|
+
```
|
16
|
+
は動作しません。
|
17
|
+
|
18
|
+
ChoromeのDeveloper Toolsで確認したところ、以下のように
|
19
|
+
なっていました。
|
20
|
+
```html
|
21
|
+
<!-- templateで定義 -->
|
22
|
+
<button _ngcontent-c0>ADD</button>
|
23
|
+
|
24
|
+
<!-- 動的に生成 -->
|
25
|
+
<input type="text" (focus)="focusFunc()" />
|
26
|
+
```
|
27
|
+
イベントバインディングがそのまま表示されてしまっているので、
|
28
|
+
DOMに追加後に何か処理を行わないといけないのでしょうか?
|
6
29
|
初歩的な質問で申し訳ないのですが、アドバイスをよろしくお願い致します。
|
7
30
|
|
8
31
|
###該当のソースコード
|
9
|
-
```
|
32
|
+
```typescript
|
33
|
+
import {
|
34
|
+
Component,
|
35
|
+
} from '@angular/core';
|
36
|
+
|
10
37
|
@Component({
|
11
38
|
selector: 'app-root',
|
12
39
|
template: `
|
13
40
|
<div id="hoge">
|
14
|
-
|
41
|
+
<button (click)="addInput()">ADD</button>
|
15
42
|
</div>
|
16
43
|
`,
|
17
44
|
})
|
@@ -20,7 +47,7 @@
|
|
20
47
|
addInput() {
|
21
48
|
let elm = document.getElementById('hoge');
|
22
49
|
let divElm = document.createElement('div');
|
23
|
-
divElm.innerHTML = '<input (focus)="focusFunc()" />';
|
50
|
+
divElm.innerHTML = '<input type="text" (focus)="focusFunc()" />';
|
24
51
|
elm.appendChild(divElm);
|
25
52
|
}
|
26
53
|
|
1
誤って公開してしまったので、更新しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,26 +1,31 @@
|
|
1
1
|
###前提・実現したいこと
|
2
2
|
|
3
|
-
ここに質問したいことを詳細に書いてください
|
4
|
-
|
3
|
+
動的に生成したinputにフォーカスが当たった時にアラートを出したいと考えて入るのですが、
|
5
|
-
|
4
|
+
呼び出されません...
|
6
5
|
|
7
|
-
|
6
|
+
初歩的な質問で申し訳ないのですが、アドバイスをよろしくお願い致します。
|
8
7
|
|
9
|
-
```
|
10
|
-
エラーメッセージ
|
11
|
-
```
|
12
|
-
|
13
8
|
###該当のソースコード
|
14
9
|
```typeScript
|
15
10
|
@Component({
|
11
|
+
selector: 'app-root',
|
16
12
|
template: `
|
17
|
-
<div id="hoge">
|
13
|
+
<div id="hoge">
|
14
|
+
<button (click)="addInput()">ADD</button>
|
15
|
+
</div>
|
16
|
+
`,
|
18
17
|
})
|
19
18
|
|
19
|
+
export class AppComponent {
|
20
|
+
addInput() {
|
21
|
+
let elm = document.getElementById('hoge');
|
22
|
+
let divElm = document.createElement('div');
|
23
|
+
divElm.innerHTML = '<input (focus)="focusFunc()" />';
|
24
|
+
elm.appendChild(divElm);
|
25
|
+
}
|
26
|
+
|
27
|
+
focusFunc() {
|
28
|
+
alert('focus!!');
|
29
|
+
}
|
30
|
+
}
|
20
|
-
```
|
31
|
+
```
|
21
|
-
|
22
|
-
###試したこと
|
23
|
-
課題に対してアプローチしたことを記載してください
|
24
|
-
|
25
|
-
###補足情報(言語/FW/ツール等のバージョンなど)
|
26
|
-
より詳細な情報
|