11

我正在尝试使用这种技术拦截输入属性更改和设置器,以将一些数据从父组件传递到子组件,并在值更改时调用子组件中的方法。我的问题是子组件绑定到父组件<router-link>,当我尝试使用以下方法传递数据时:

父组件.html:

<router-outlet [some_value] = "some_value"></router-outlet>

其中 some_value 是我试图从父级传递给子级的参数。

父组件.ts:

public some_value: string;

父组件.ts:

@Input()
  public set some_vale(number : string){
    this._some_value = number;
  }

但是我得到了错误

未处理的承诺拒绝:模板解析错误:无法绑定到“some_value”,因为它不是“router-outlet”的已知属性。

我究竟做错了什么?使用时将数据从父组件传递到子组件的正确方法是<router-outlet>什么?

在此先感谢您的帮助。

4

1 回答 1

10

服务:

import {Injectable, EventEmitter} from "@angular/core";    

@Injectable()
export class DataService {
onGetData: EventEmitter = new EventEmitter();

getData() {
  this.http.post(...params).map(res => {
    this.onGetData.emit(res.json());
  })
}

零件:

import {Component} from '@angular/core';    
import {DataService} from "../services/data.service";       
    
@Component()
export class MyComponent {
  constructor(private DataService:DataService) {
    this.DataService.onGetData.subscribe(res => {
      (from service on .emit() )
    })
  }

  //To send data to all subscribers from current component
  sendData() {
    this.DataService.onGetData.emit(--NEW DATA--);
  }
}
于 2017-08-07T07:26:57.417 回答