Angular 6 单击另一个组件时从组件输出信息
Angular 6 output info from the component when another component is clicked
我有 3 个组成部分:
一、客户名单
2.客户(姓名)
3. 客户的完整信息(姓名、年龄、地址),当我点击用户项目时必须出现。
而且我不明白,当我在客户列表中单击该客户时,如何获取有关特定客户的信息(如何显示第三个组件)。
这是我的代码:
1) 客户-list.component.ts:
import { Component, OnInit, Input } from '@angular/core';
import { ClientsService } from '../clients.service';
import { Client } from '../../models/client.model';
@Component({
selector: 'app-clients-list',
templateUrl: './clients-list.component.html',
styleUrls: ['./clients-list.component.css']
})
export class ClientsListComponent implements OnInit {
public clients: Client[] = [];
public selectedClient;
constructor(private _clientsService: ClientsService) {}
ngOnInit() {
this._clientsService.getClient()
.subscribe(data => this.clients = data);
}
}
客户-list.component.html:
<app-client-detail *ngFor="let client of clients" [clients]="client" (clientSelected)="selectedClient=client"></app-client-detail>
<app-selected-client-details></app-selected-client-details>
2) 客户-detail.component.ts:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-client-detail',
templateUrl: './client-detail.component.html',
styleUrls: ['./client-detail.component.css']
})
export class ClientDetailComponent implements OnInit {
@Input() clients;
@Output() clientSelected: EventEmitter<any> = new EventEmitter;
constructor() {}
ngOnInit() {}
selectClient() {
this.clientSelected.emit();
}
}
客户端-detail.component.html:
<div (click)="selectClient()">
<p>{{clients.name}}</p>
</div>
3) 选定的客户端-details.component.ts:
import {Component, OnInit, Input} from '@angular/core';
@Component({
selector: 'app-selected-client-details',
templateUrl: './selected-client-details.component.html',
styleUrls: ['./selected-client-details.component.css']
})
export class SelectedClientDetailsComponent implements OnInit {
@Input() selectedClient;
constructor() {}
ngOnInit() {}
}
选定客户-details.component.html:
<div>
<p>{{selectedClient?.firstName}}</p>
<p>{{selectedClient?.age}}</p>
<p>{{selectedClient?.address}}</p>
</div>
如果我的客户-list.component.html 看起来像这样-
<app-client-detail *ngFor="let client of clients" [clients]="client" (clientSelected)="selectedClient=client"></app-client-detail>
<div>
<p>{{selectedClient?.firstName}}</p>
<p>{{selectedClient?.age}}</p>
<p>{{selectedClient?.address}}</p>
</div>
- 它有效。当我点击用户时,阻止用户信息出现。但是用户的信息必须是另一个组件。还有一个问题。
我想我必须做这样的事情:
(在客户-list.component.html)
<app-client-detail *ngFor="let client of clients" class="client-item" [clients]="client" (clientSelected)="selectedClient=client"></app-client-detail>
<app-selected-client-details [???]></app-selected-client-details>
但我不明白我该怎么做。请帮帮我...
我对您的代码做了一些更改,但首先是在客户端详细信息上 selectClient
方法发出未定义我修复了这个
this.clientSelected.emit(this.client); // client was clients
客户-list.component.html 看起来像这样
<app-client-detail *ngFor="let client of clients" [client]="client"
(clientSelected)="selectedClientComponent.selectedClient=$event"></app-client-detail>
<app-selected-client-details #selectedClientComponent></app-selected-client-details>
这就是我如何通过创建模板引用 #selectedClientComponent
并将 $event 分配给 selectedClientComponent
的 selectedClient 将选定的客户端发送到选定的客户端组件
selectedClientComponent.selectedClient=$event
$event is the cleint object that was emited
我有 3 个组成部分: 一、客户名单 2.客户(姓名) 3. 客户的完整信息(姓名、年龄、地址),当我点击用户项目时必须出现。
而且我不明白,当我在客户列表中单击该客户时,如何获取有关特定客户的信息(如何显示第三个组件)。
这是我的代码:
1) 客户-list.component.ts:
import { Component, OnInit, Input } from '@angular/core';
import { ClientsService } from '../clients.service';
import { Client } from '../../models/client.model';
@Component({
selector: 'app-clients-list',
templateUrl: './clients-list.component.html',
styleUrls: ['./clients-list.component.css']
})
export class ClientsListComponent implements OnInit {
public clients: Client[] = [];
public selectedClient;
constructor(private _clientsService: ClientsService) {}
ngOnInit() {
this._clientsService.getClient()
.subscribe(data => this.clients = data);
}
}
客户-list.component.html:
<app-client-detail *ngFor="let client of clients" [clients]="client" (clientSelected)="selectedClient=client"></app-client-detail>
<app-selected-client-details></app-selected-client-details>
2) 客户-detail.component.ts:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-client-detail',
templateUrl: './client-detail.component.html',
styleUrls: ['./client-detail.component.css']
})
export class ClientDetailComponent implements OnInit {
@Input() clients;
@Output() clientSelected: EventEmitter<any> = new EventEmitter;
constructor() {}
ngOnInit() {}
selectClient() {
this.clientSelected.emit();
}
}
客户端-detail.component.html:
<div (click)="selectClient()">
<p>{{clients.name}}</p>
</div>
3) 选定的客户端-details.component.ts:
import {Component, OnInit, Input} from '@angular/core';
@Component({
selector: 'app-selected-client-details',
templateUrl: './selected-client-details.component.html',
styleUrls: ['./selected-client-details.component.css']
})
export class SelectedClientDetailsComponent implements OnInit {
@Input() selectedClient;
constructor() {}
ngOnInit() {}
}
选定客户-details.component.html:
<div>
<p>{{selectedClient?.firstName}}</p>
<p>{{selectedClient?.age}}</p>
<p>{{selectedClient?.address}}</p>
</div>
如果我的客户-list.component.html 看起来像这样-
<app-client-detail *ngFor="let client of clients" [clients]="client" (clientSelected)="selectedClient=client"></app-client-detail>
<div>
<p>{{selectedClient?.firstName}}</p>
<p>{{selectedClient?.age}}</p>
<p>{{selectedClient?.address}}</p>
</div>
- 它有效。当我点击用户时,阻止用户信息出现。但是用户的信息必须是另一个组件。还有一个问题。
我想我必须做这样的事情:
(在客户-list.component.html)
<app-client-detail *ngFor="let client of clients" class="client-item" [clients]="client" (clientSelected)="selectedClient=client"></app-client-detail>
<app-selected-client-details [???]></app-selected-client-details>
但我不明白我该怎么做。请帮帮我...
我对您的代码做了一些更改,但首先是在客户端详细信息上 selectClient
方法发出未定义我修复了这个
this.clientSelected.emit(this.client); // client was clients
客户-list.component.html 看起来像这样
<app-client-detail *ngFor="let client of clients" [client]="client"
(clientSelected)="selectedClientComponent.selectedClient=$event"></app-client-detail>
<app-selected-client-details #selectedClientComponent></app-selected-client-details>
这就是我如何通过创建模板引用 #selectedClientComponent
并将 $event 分配给 selectedClientComponent
selectedClientComponent.selectedClient=$event
$event is the cleint object that was emited