【问题标题】:ERROR TypeError: Cannot read property '_id' of undefined at Object.eval [as updateDirectives]错误类型错误:无法读取 Object.eval [as updateDirectives] 处未定义的属性“_id”
【发布时间】:2018-11-03 03:56:47
【问题描述】:

我在数据绑定 _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 => {});

}

我认为我得到的错误是由于模型绑定不正确,但我无法弄清楚如何解决它。

【问题讨论】:

    标签: angular angular-ngmodel


    【解决方案1】:

    您在制定工作流程时遇到了几个问题。

    首先,您尝试绑定到服务中而不是组件中存在的变量。服务不应该负责存储视图状态。视图状态应该是组件的责任。你需要在你的组件上有一个变量(例如selectedIphoneId),然后你可以在你的[(ngModel)]中使用它。

    同时删除模板引用#_id=“ngModel 的分配。如果您甚至不需要使用它,请摆脱它。你会有这样的东西:

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

    【讨论】:

    • 感谢您的回复,我试过放置?正如你所建议的,但它不起作用,上面我将附上我正在使用的 iphone.service 文件。
    • 啊等等为什么你有模板引用#_id=“ngModel”?摆脱它。如果您需要模板参考,只需留下 #_id 即可
    • 还是同样的错误。 :(,我附上了上面的iphone.service文件,有什么问题吗?
    • 我需要看看你的组件。服务并没有告诉我太多。您在哪里将数据分配给 selectedIphone?
    • 我已将上面的 iphone.model 附加到 OP
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多