の作業が、ここには作業 ではないではないが、子コンポーネント角度@outputが@outputのイベント・エミッターと親通信に子をやろうとし
import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';
@Component({
selector: 'app-emiter',
templateUrl: './emiter.component.html',
styleUrls: ['./emiter.component.css']
})
export class EmiterComponent implements OnInit {
@Output() emitor: EventEmitter<any>
constructor() { this.emitor = new EventEmitter()}
touchHere(){this.emitor.emit('Should Work');
console.log('<><><><>',this.emitor) // this comes empty
}
ngOnInit() {
}
}
あり、これはHTMLテンプレート
<p>
<button (click)=" touchHere()" class="btn btn-success btn-block">touch</button>
</p>
ですconsole.logはtouch内に何も表示されません これを親コンポーネントの中に入れても何も表示されません 親コンポーネント
親テンプレート@outputで<app-emitor>(emitor)='touchThis($event)'</app-emiter>
が 'いわゆる' しなければならない、ない子法:ここ
import { Component , OnInit} from '@angular/core';
// service I use for other stuff//
import { SenderService } from './sender.service';
// I dont know if I have to import this but did it just in case
import { EmiterComponent } from './emiter/emiter.component'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
user: any;
touchThis(message: string) {
console.log('Not working: ${message}');
}
constructor(private mySessionService: SenderService) { }
}
とは、HTMLテンプレートに
<div>
<app-emiter>(touchHere)='touchThis($event)'</app-emiter>
</div>
@Output decoratorは、子がイベントを送出するため、子にあります。そのイベントはconsole.loggedにする必要がありますが、空になっています。親では、イベントを受け取るイベントハンドラを置くが、子ではconsole.logのときに何かが見えるはずです – shark6552
もちろん@Outputは子コンポーネントにあり、親テンプレートで呼び出す必要があります。あなたのコードでは、代わりに子メソッド(touchHere)を呼び出しています – Vega
これは親テンプレートです