3
Angular 2 quickstartを使用してプロジェクトをセットアップしました。parent2のイベント2リスナーが子からのイベントから呼び出されない
main.ts:
import { bootstrap } from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component';
bootstrap(AppComponent);
app.component.ts:
import { Component } from '@angular/core';
import { MenuComponent } from './menu.component';
@Component({
selector: 'my-app',
template: `<menu (onToggleEvent)="onToggle($event)"></menu>`,
directives: [ MenuComponent ]
})
export class AppComponent {
onToggle(data) {
console.log(data);
}
}
menu.component.ts:
それから私は、同様のパターン as hereに従うことをしようと、次のコンポーネントを持っていますimport { Component, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'menu',
template: `<button (click)="toggleMe()">Toggle Me</button>`
})
export class MenuComponent {
@Output onToggleEvent = new EventEmitter();
public toggleMe(): void {
this.onToggleEvent.emit('test');
}
}
index.html:
<html>
<head>
<title>My page</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="styles.css">
<!-- 1. Load libraries -->
<!-- Polyfill(s) for older browsers -->
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<!-- 2. Configure SystemJS -->
<script src="systemjs.config.js"></script>
<script>
System.import('app').catch(function(err){ console.error(err); });
</script>
</head>
<!-- 3. Display the application -->
<body>
<my-app>Loading...</my-app>
</body>
</html>
デバッグすると、toggleMe()
が実行され、イベントが発行されますが、onToggle()
メソッドは呼び出されません。理由は何ですか?