angular - 错误类型错误:“_co.client 未定义”
问题描述
我已经恢复了客户端的数据,现在我想恢复它成功完成的每个客户端的详细信息,但它给了我这个错误。
我已经恢复了客户端的数据,现在我想恢复它成功完成的每个客户端的详细信息,但它给了我这个错误。
错误类型错误:“_co.client 未定义”
客户端服务.ts
import { map } from 'rxjs/operators';
import { AngularFirestore,AngularFirestoreCollection,AngularFirestoreDocument } from 'angularfire2/firestore';
import { Injectable } from '@angular/core';
import { Client } from '../models/client';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class ClientService {
clientsCollection:AngularFirestoreCollection<Client>;
clientsDoc:AngularFirestoreDocument<Client>;
constructor(private afs : AngularFirestore) {
this.clientsCollection= this.afs.collection('clients');
}
getClient(id:string):Observable<Client>{
return this.clientsCollection.doc(id).valueChanges();
}
}
详细信息-client.component.ts
import { FlashMessagesService } from 'angular2-flash-messages';
import { ClientService } from './../../services/client.service';
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Client } from 'src/app/models/client';
@Component({
selector: 'details-client',
templateUrl: './details-client.component.html',
styleUrls: ['./details-client.component.css']
})
export class DetailsClientComponent implements OnInit {
id:string;
client:Client;
constructor(
private clientService:ClientService,
private route:ActivatedRoute,
private flashMessage:FlashMessagesService
) { }
ngOnInit() {
this.id = this.route.snapshot.params.id;
this.clientService.getClient(this.id).subscribe(client =>{
this.client = client;
console.log(this.client);
})
}
}
详细信息-client.component.html
<div class="row m-3">
<div class="col-md-6">
<a routerlink="/"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i>go to dashboard</a>
</div>
<div class="col-md-6">
<div class="btn-group">
<button class="btn btn-danger">
<i class="fa fa-pencil" aria-hidden="true"></i>Edit
</button>
<button class="btn btn-dark">
<i class="fa fa-trash" aria-hidden="true"></i>Delete
</button>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<h4 class="card-title">{{ client.firstname }} {{ client.lastname }}</h4>
<div class="row">
<div class="col-md-8">
<ul class="list-group">
<li class="list-group-item ">id : <strong>{{ id }}</strong></li>
<li class="list-group-item ">Phone : <strong>{{ client.phone }}</strong></li>
<li class="list-group-item">email : <strong>{{ client.email }}</strong></li>
<li class="list-group-item ">Disabled item</li>
</ul>
</div>
<div class="col-md-4 text-right">
balance <button class="btn btn-success"><i class="fa fa-pencil" aria-hidden="true"></i></button>
<h4>{{ client.balance | currency:"USD":"symbol"}}</h4>
</div>
</div>
</div>
</div>
解决方案
您的问题出在模板中,因为您的客户端变量在开始时未定义,因为 .subscribe 是异步方法。
尝试使用管道异步(| async),例如:
*ngIf="client.id!=5 | async"
//OR
{{client.id | async}}
或者你可以使用?在对象变量之前,例如:
*ngIf="client?.id!=5 "
//OR
{{client?.id}}
推荐阅读
- c++ - 在 windows 下的 mingw 中读取不会读取整个文件。为什么?
- ruby - 字符串中的交替大小写 - Ruby
- c++ - 如何在没有交互式提示的情况下执行 update-alternatives --config?
- border - 如何在 r 中使用 gt 调整 column_labels 边框?
- excel - VBA:复制一行,将其插入到上面并更改一个单元格的值
- amazon-web-services - AWS Gateway API,将 lambda 设置为代理
- python-3.x - 在字符串中有 ( ) 如何 re.sub 到 \( \)
- python - 尝试将 requests.get 对象转换为 json 并收到错误
- richfaces - 日历 RichFaces 3.3.1 JSF 1.2 BUG Chrome
- python - 使用字典加入与映射以将新数据添加到 Pandas/PySpark 数据框?