Angular 7:数据看起来空白

时间:2019-02-26 12:02:40

标签: angular

我是Angular的新手,我正在尝试实现一些看起来很简单但...... pp

我想检索表中的一些数据并用它们初始化一个对象。数据是我的班主任的详细信息。当我使用输入按钮时,如果导体不存在,我想显示详细信息或消息。

然后,我分为三个重要部分: 服务:

/** Récupérer un conducteur par numéro de carte. Non trouvé: erreur 404 */
  getConducteur(cardNumber: string): Observable<Conducteur> {
    const url = `${this.conducteursUrl}/?cardNumber=${cardNumber}`;
    return this.http.get<Conducteur>(url).pipe(
      catchError(this.handleError<Conducteur>(`getConducteur cardNumber=${cardNumber}`))
    );
}

component.ts文件:

conducteur: Conducteur;

  constructor(private conducteurService: ConducteurService) { }

  getConducteur(cardNumber: string): void{
    this.conducteurService.getConducteur(cardNumber)
      .subscribe(conducteur => this.conducteur = conducteur);
  }

和html文件:

<form>
  <div class="form-group">
    <label for="inputNumCarte">Numéro de carte de conducteur</label>
    <input type="text" class="form-control" id="inputNumCarte" 
      aria-describedby="numCarte" placeholder="Saisir numéro"
      #cardNumber>
    <small id="numCarte" class="form-text text-muted">L'utilisation des données est réservée aux plate-formes.</small>
  </div>
  <button type="submit" class="btn btn-primary mb-2" 
    (click)="getConducteur(cardNumber.value);
    cardNumber.value=''">Vérifier</button>
</form>
<div *ngIf="conducteur">
  <h2>{{conducteur.cardBearerName | uppercase}}</h2>
  <div><span>Numéro de carte : </span>{{conducteur.cardNumber}}</div>
  <div>
    <label>Prénom :
      <p>{{conducteur.cardBearerFirstname}}</p>
    </label>
  </div>
</div>

似乎没有初始化行为体,但是* ng如果显示,因为它存在但他为空。 您能帮我找到我想念的地方吗? 谢谢

hhtp请求对此进行响应:

status: 404
statusText: "Not Found"
url: "api/conducteurs/?cardNumber=01234567890"

Conducteur类的定义如下:

export class Conducteur {
    cardNumber: string;
    cardStatus: string;
    cardBearerName: string;
    cardBearerFirstname: string;
    cardBearerDob: string;
    cardBearerPob: string;
    cardBearerPhoto: string;
}

最后是应该初始化的数据:

{ cardNumber: "01234567890", cardStatus: "active", cardBearerName: "dupont", cardBearerFirstname: "jérôme", cardBearerDob: "01/01/2000", cardBearerPob: "paris", cardBearerPhoto: "cGhvdG8xCg==" },

顺便说一句,数据只是使用内存Web API的模拟。

当我尝试此代码时:

getConducteur(cardNumber: string): void {
this.conducteurService.getConducteur(cardNumber).subscribe(conducteur =>
  {
    if(conducteur)
  {
  this.conducteur = conducteur;
  console.log(this.conducteur);
  }
  else
  this.conducteur=null;
  console.log("conducteur est null !")
  }
  ,(error)=>
  {
  console.log(error);
  });

我有这个结果: enter image description here

2 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。 我的服务返回一个只有1个指挥者的数组,索引为0。 然后我需要像这样从RxJS使用.map:

getConducteur(cardNumber: string): Observable<Conducteur> {
const url = `${this.conducteursUrl}/?cardNumber=${cardNumber}`;
return this.http.get<Conducteur>(url).pipe(
  map(conducteur => conducteur[0]),
  catchError(this.handleError<Conducteur>(`getConducteur cardNumber=${cardNumber}`))
);
  }

感谢您的意见,他们对我有很大帮助。

答案 1 :(得分:0)

好像从api返回时存在问题。 您可以运行以下代码:

getConducteur(cardNumber: string): void
{
 this.conducteurService.getConducteur(cardNumber).subscribe(conducteur =>
{
 if(conducteur)
 {
 this.conducteur = conducteur;
 console.log(this.conductteur);
 }
 else
 this.conducteur=null;
}
,(error)=>
{
console.log(error);
});
  }

所以我们可以看到响应或错误(如果存在)返回的api。