Angular4/5传值问题

图片描述
这个option是传进来的没问题,我想把searchTags传出去, 不用事件发射,不用相同的service怎么才能将searchTags属性绑定到父组件的属性当中?

图片描述

阅读 3.6k
4 个回答

你不用事件,如何通知父组件呢,还是用事件输出吧 @Output optionsChange = new EventEmitter<number>();

组件间相互通信的方式:

父组件向子组件中传递数据,通过子组件中定义的@input property, 输入参数:

子组件中:
@Input() options: any;

父组件中:
<father>
    <son [options]="opt"></son>
</father>

子组件向父组件中传递数据, 通过子组件中定义的@Output EventEmitter, 输出事件

子组件中:
<button (click)="onClick($event)">Click</button>
@Input() options: any;
@Output() changed: EventEmitter<any> = new EventEmitter<any>();

onClick(value) {
   this.changed.next(value);
}

父组件中:
<father>
    <son [options]="opt" (changed)="handleChanged($event)"></son>
</father>

handleChanged(value) {
    console.info(value);////
}

你又不用父子组件的传递,又不用同一个服务,不是自己把路堵死了么...
那就定义A服务存储数据,定义B服务从A服务获取数据


export class ChildComponent{
    constructor(@Inject(ParentComponent) private parent: ParentComponent){

    }
    
    searchTags:any

    someMethod(){
        this.parent.aPublicProperty = searchTags;
    }
}

ng5后支持注入父组件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进