我试图在Child Component上调用Parent Component函数,并按此实现。
项目form.component.ts
@Component({
selector: 'app-project-form',
templateUrl: './project-form.component.html',
styleUrls: ['./project-form.component.css'],
encapsulation: ViewEncapsulation.None
})
export class ProjectFormComponent implements OnInit {
@Input() project: Project;
@Output() createProject = new EventEmitter<string>();
newProject() {
console.log("submit");
this.createProject.emit('submit');
}
}
项目form.component.html
<button (click)="newProject()" class = "btn-success" >New</button>
项目view.component.ts
export class ProjectViewComponent implements OnInit {
projects: Project[];
projectform: Project;
createProject(event){
console.log("create Project on parent component");
}
}
项目view.component.html
<app-project-form [project]="projectform" (createProject)="createProject($event)"></app-project-form>
当我点击子组件的New
按钮时,我只能在控制台上看到"submit"
而不是"create Project on parent component"
。
表示未发出事件或未收到父事件。 基本上,我错过了一些东西 请为我分享任何一种打击。
答案 0 :(得分:2)
你错过了一件事@artgb,createProject(event:string){}
你试试这个。
答案 1 :(得分:1)
实际上我尝试了你的代码,它在Angular 5.0.0上运行正常。当我点击New('submit'和'create Project ...')时,我收到两条控制台消息。我认为你的问题可能与EventEmitter没有直接关系。你提供的代码片段直接编译并运行以下amendements(如果你想测试它):
添加缺失的导入
添加ngOnInit
所以我发现你当前的代码没有任何问题。你的问题可能在其他地方。