我用的是Angular2(字体)
我有两个组件(实际上它们也是两页)。他们不是父子关系。
我想在单击第一个组件(页)中的链接时向第二个组件(页)传递一个值。
我知道通过路由器的“url参数”。但我不想在链接中显示这个参数。还有别的办法吗?
谢谢您!

最佳答案

规范的方法是建立injectable服务并将该服务注入需要数据的任何组件。由于服务是单例的,组件将访问相同的数据。它们在不同的页面上并不重要。Plunker here
编辑:下面是一个更复杂的示例,它通过订阅服务上的EventEmitter来显示组件之间的双向通信:Plunker

import {Component, Injectable} from 'angular2/core'

// your shared service
// provide reference in parent component or bootstrap
@Injectable()
export class myService {
  sharedData:string = "String from myService"
}

@Component({
  selector: 'page1',
  providers: [],
  template: `
    <div>
      <b>Component Page1 - shared data:</b> {{SharedData}}
    </div>
  `,
  directives: [],
})
export class Page1 {
  constructor(aService: myService) {
    this.SharedData = aService.sharedData
  }
}

@Component({
  selector: 'page2',
  providers: [],
  template: `
    <div>
      <b>Component Page2 - shared data:</b> {{SharedData}}
    </div>
  `,
  directives: [],
})
export class Page2 {
  constructor(aService: myService) {
    this.SharedData = aService.sharedData
  }
}

10-08 17:42