相关疑难解决方法(0)

Angular 2同级组件通信

我有一个ListComponent.在ListComponent中单击某个项目时,该项目的详细信息应显示在DetailComponent中.两者都在屏幕上同时出现,因此不涉及路由.

如何告诉DetailComponent单击ListComponent中的哪个项目?

我考虑过将一个事件发送到父(AppComponent),并让父设置在DetailComponent上使用@Input设置selectedItem.id.或者我可以使用具有可观察订阅的共享服务.


编辑:通过事件+ @Input设置所选项目不会触发DetailComponent,但是,如果我需要执行其他代码.所以我不确定这是一个可以接受的解决方案.


但是这两种方法看起来都比Angular 1的做法复杂得多,这种做法要么通过$ rootScope.$ broadcast或$ scope.$ parent.$ broadcast.

由于Angular 2中的所有内容都是组件,我很惊讶没有关于组件通信的更多信息.

有没有其他/更直接的方法来实现这一目标?

javascript typescript angular

110
推荐指数
7
解决办法
8万
查看次数

使用 angular 7 在两个同级组件之间进行通信而不使用两者的公共服务的方法

在这里,我想在同一个父级的两个组件之间进行通信。基本上,我想将数据从一个组件传递到另一个组件。

第一个组件.ts

constructor(
    private service: service1,
    private serve: service2,
) {}

ngOnInit() {
    this.service.getUser().subscribe((data) => {
        this.serve.setAccount("1", "apple");
        this.serve.setEnvironment("Happy"); 
    })
}
Run Code Online (Sandbox Code Playgroud)

第二组件.ts

constructor(private usingService : service2) { }

 ngOnInit() {
 this.Account = this.serve.getAccount();
 this.environmentDetails = this.serve.getEnvironment();

 }
Run Code Online (Sandbox Code Playgroud)

我需要从 firstComponent 检索数据到 second.here 第一个组件在第二个组件之后加载。soo,第一个组件设置的数据稍后在图片中。

尝试使用 rxjs.but 的主题,我们如何在这个例子的 firstComponent.ts 中使用主题?

我如何在这两个组件之间进行通信,因为它们是彼此的兄弟姐妹?请帮忙

rxjs behaviorsubject angular angular7

4
推荐指数
1
解决办法
6330
查看次数

将数据从一个组件传递到 angular4 中的另一个组件

我的 Angular 应用程序中有两个组件(Component1 和 Component2)。我在我的应用程序组件中呈现了这两个组件。现在我想将一个值从 Component1 发送到 Component2。如何发送。有没有最佳实践??

在 Component1 我有一个这样的代码。组件1.html

<button (click)="passData()">Click Me</button>
Run Code Online (Sandbox Code Playgroud)

组件1.ts

import { Component, OnInit , Output , EventEmitter } from '@angular/core';
@Component({
  selector: 'app-component1',
  templateUrl: './component1.component.html',
  styleUrls: ['./component1.component.css']
})
export class Component1Component implements OnInit {

   Component1Variable:string="Component1VariableSent";
  constructor() { }
  ngOnInit() {
  }
   @Output()
   SendValue=new EventEmitter<string>();
   passData()
   {
        this.SendValue.emit(this.Component1Variable);
   }
}
Run Code Online (Sandbox Code Playgroud)

在 Component2.html 我有

<app-component1 (SendValue)="ValueFromComp1($event)"> </app-component1>
{{ValueFromComponent1}}
Run Code Online (Sandbox Code Playgroud)

在 Component2.ts 我有

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-component2',
  templateUrl: './component2.component.html',
  styleUrls: ['./component2.component.css']
}) …
Run Code Online (Sandbox Code Playgroud)

angular angular5

2
推荐指数
1
解决办法
3万
查看次数