ОШИБКА TypeError: Невозможно прочитать свойство '_id' из неопределенного в Object.eval [как updateDirectives] - PullRequest
0 голосов
/ 02 ноября 2018

я получаю эту ошибку после привязки данных к свойству _id. Кто-нибудь может мне помочь.

КОД:

<div class="form-group">
  <input type="hidden" name="_id" #_id="ngModel" [(ngModel)]="iphoneService.selectedIphone._id">
</div>

Вот код iphone.Service

import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs/Observable";
import "rxjs/add/operator/map";
import "rxjs/add/operator/toPromise";

import { Iphone } from "./iphone.model";

@Injectable()
export class IphoneService {
  selectedIphone: Iphone;
  iphones: Iphone[];
  readonly baseUrl = "http://localhost:3000/iphone";

  constructor(private http: HttpClient) {}

  postIphone(iphon: Iphone) {
    return this.http.post(this.baseUrl, iphon);
  }
}

ЗДЕСЬ iphon.model

export interface Iphone {
_id: string;
firstName: string;
lastName: string;
email: string;
colorPrefence: string;
contact: string;
country: string;
state: string;
city: string;
zipCode: string;
transactionId: string;
__v: string;

}

Вот iphone.component.ts

@Component({
selector: "app-iphone",
templateUrl: "./iphone.component.html",
styleUrls: ["./iphone.component.css"],
providers: [IphoneService]
})
export class IphoneComponent implements OnInit, AfterViewChecked {
constructor(public iphoneService: IphoneService) {}

ngOnInit() {}

onSubmit(form: NgForm) {
this.iphoneService.postIphone(form.value).subscribe(res => {});

}

Я думаю, что ошибка, которую я получаю, связана с неправильной привязкой модели, но я не могу понять, как ее решить.

1 Ответ

0 голосов
/ 02 ноября 2018

У вас есть несколько проблем при разработке рабочего процесса.

Сначала вы пытаетесь выполнить привязку к переменной, которая существует в службе, а не в компоненте. Сервисы не должны нести ответственность за сохранение состояния просмотра. Просмотр состояния должен быть обязанностью компонента. Вам необходимо иметь переменную в вашем компоненте (например, selectedIphoneId), а затем вы можете использовать ее в своем [(ngModel)].

Также удалите присвоение ссылки на шаблон #_id=“ngModel. Если вам даже не нужно использовать его, избавьтесь от него. Вы бы хотели что-то вроде этого:

<div class="form-group">
    <input type="hidden" name="_id" #_id [(ngModel)]="selectedIphoneId">
  </div>
...