我是角度2的新手,并开始学习概念。我有一个组件在与我的控制器绑定时不显示数据。尽管如此,用户界面仍然使用硬编码数据加载。
这里是我的组件 个人details.component.ts用户界面没有显示角度2中的服务器数据
import { Component, OnInit, Input} from '@angular/core';
import { PersonalDetails } from '../Shared/personal-details.type';
import { PersonalDetailsService } from '../services/personal-details.service';
@Component({
selector: 'personal-details',
templateUrl: './personal-details.component.html'
})
export class PersonalDetailsComponent implements OnInit {
@Input() DetailsObtained: PersonalDetails;
constructor(private personalDetailsService: PersonalDetailsService) {
//this.DetailsObtained = {
// Address : "from client",
// ContactNumber : "1112225436",
// EmailAddress:"[email protected]",
// Name : "sandeep"
//}
}
ngOnInit(): void {
this.personalDetailsService.getPersonalDetails().
then(details => {
this.DetailsObtained = details
});
}
}
Service
personal-details.service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/Rx';
import {PersonalDetails} from '../Shared/personal-details.type';
@Injectable()
export class PersonalDetailsService {
constructor(private http: Http) {
}
getPersonalDetails() {
var personalDetails = this.http.get('api/PersonalDetails/GetPersonalDetails')
.map(response => response.json() as PersonalDetails).toPromise();
return this.http.get('api/PersonalDetails/GetPersonalDetails')
.map(response => response.json() as PersonalDetails).toPromise();
}
}
控制器: PersonalDetailsController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Skills.Entities;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace Skills.Controllers
{
[Route("api/[controller]")] // api/PersonalDetails
public class PersonalDetailsController : Controller
{
private static PersonalDetailsEntities _personalDetailsEntities = new PersonalDetailsEntities()
{
Name = "Sandeep Dutta- server",
Address = "from server",
EmailAddress = "[email protected]",
ContactNumber ="1112224356"
};
[HttpGet("[action]")]
public IActionResult GetPersonalDetails()
{
return new ObjectResult(_personalDetailsEntities);
}
}
}
在调试我发现,它是要求Name属性这已经是一个部分的回应。任何帮助将不胜感激。 下文提到的是铬调试
ERROR TypeError: Cannot read property 'Name' of undefined at Object.eval [as updateRenderer] (PersonalDetailsComponent.html:12) at Object.debugUpdateRenderer [as updateRenderer] (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:24216) at checkAndUpdateView (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23363) at callViewAction (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23723) at execComponentViewsAction (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23655) at checkAndUpdateView (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23364) at callViewAction (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23723) at execEmbeddedViewsAction (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23681) at checkAndUpdateView (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23359) at callViewAction (vendor.js?v=RCvRrqPvM2Kc5BlkEQ045FeXR6gPMRIwfn51ludN14I:sourcemap:23723)
个人details.component.html
<div class="panel panel-default panel-primary">
<div class="panel-heading">
<h3>Some basic personal information!</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-6">
<p>Full Name:</p>
</div>
<div class="col-md-6">
{{ DetailsObtained?.Name }}
</div>
</div>
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-6">
<p>Address:</p>
</div>
<div class="col-md-6">
{{ DetailsObtained?.Address }}
</div>
</div>
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-6">
<p>EmailAddress:</p>
</div>
<div class="col-md-6">
{{ DetailsObtained?.EmailAddress }}
</div>
</div>
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-6">
<p>ContactNumber:</p>
</div>
<div class="col-md-6">
{{ DetailsObtained?.ContactNumber | formatPhoneNumber }}
</div>
</div>
</div>
</div>
喜АлександрПетрик数据:感谢您的答复。我试过{{DetailsObtained?.name}},但那不起作用。您能否详细阐述一下如何使用组件的解析器? – sandeep
此链接安全导航操作员(https://angular.io/guide/template-syntax#the-safe-navigation-operator-and-null-property-paths)。你可以添加你的HTML问题和你的细节变量的输出? –
感谢您分享链接。我已经在问题中添加了html以供参考。添加Angular安全导航运算符(?。)后,我看不到空引用错误,但它给我500内部服务器错误。在我的服务中看起来有点不妥。 – sandeep