Angular 点击按钮时出错";例外情况:评估“时出错”;点击"&引用;
组成部分:Angular 点击按钮时出错";例外情况:评估“时出错”;点击"&引用;,angular,Angular,组成部分: import {Component , EventEmitter} from 'angular2/core'; import {fixedHeader} from '../header/fixed-header.component.ts'; import {FooterComponent} from '../footer/footer.component.ts'; import {FORM_PROVIDERS, FormBuilder, Validators} from 'angul
import {Component , EventEmitter} from 'angular2/core';
import {fixedHeader} from '../header/fixed-header.component.ts';
import {FooterComponent} from '../footer/footer.component.ts';
import {FORM_PROVIDERS, FormBuilder, Validators} from 'angular2/common';
import {HttpService} from "./http-service.ts";
import {ControlMessages} from './control-messages.component.ts';
import {ValidationService} from './validation_service.ts';
import {Http} from "angular2/http";
import {Observable} from "rxjs/Observable";
import 'rxjs/Rx';
import {Headers} from "angular2/http";
@Component({
selector:'registration-component'
directives:[fixedHeader, FooterComponent , ControlMessages],
providers: [HttpService],
template:`
<fixed-header></fixed-header>
<form [ngFormModel]="userForm">
<div class="container" id="wrap">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<br><br>
<legend><b>Client Personal Details:</b></legend>
<div class="row">
<div class="col-xs-6 col-md-3">
<h4> Client Name:</h4>
</div>
<div class="col-xs-6 col-md-8">
<input type="text" id="fullname" class="form-control input-lg" placeholder="Full Name" ngControl="fullname" #fullname/>
</div>
<div class="col-xs-6 col-md-1">
<control-messages control="fullname"></control-messages>
</div>
</div>
<button class="btn btn-lg btn-success btn-block signup-btn"
[disabled]="!userForm.valid"
(click) ="saveUser(fullname.value)" >
Create Account
</button>
<br><br>
</div>
</div>
</div>
</form>
<footer-component></footer-component>
`
})
export class RegistrationComponent
{
response : string;
userForm: any;
constructor(
private _formBuilder: FormBuilder) {
this.userForm = this._formBuilder.group({
'fullname': ['', Validators.required],
});
}
constructor(private _httpService: HttpService) {}
saveUser( fullname : string)
{
const data = {
fullname : fullname
};
this._httpService.createPost(data)
.subscribe(
data => this.response = data,
error => console.log(error)
);
}
}
angular2.dev.js:23501BrowserDomAdapter.logGroup@
angular2.dev.js:23512ExceptionHandler.call@
angular2.dev.js:1185(匿名函数)@
angular2.dev.js:12489NgZone.\u notifyOnError@
angular2.dev.js:13533集合_1.StringMapWrapper.merge.onError@
angular2.dev.js:13437Zone.run@angular2 polyfills.js:1247(匿名)
函数)@angular2.dev.js:13456NgZone.run@
angular2.dev.js:13418outsideHandler@angular2.dev.js:13253Zone.run@
angular2 polyfills.js:1243zoneBoundFn@angular2 polyfills.js:1220
angular2.dev.js:23501原始异常:TypeError:无法读取的属性“createPost”
undefinedBrowserDomAdapter.logError@
angular2.dev.js:23501ExceptionHandler.call@
angular2.dev.js:1194(匿名函数)@
angular2.dev.js:12489NgZone.\u notifyOnError@
angular2.dev.js:13533集合_1.StringMapWrapper.merge.onError@
angular2.dev.js:13437Zone.run@angular2 polyfills.js:1247(匿名)
函数)@angular2.dev.js:13456NgZone.run@
angular2.dev.js:13418outsideHandler@angular2.dev.js:13253Zone.run@
angular2 polyfills.js:1243zoneBoundFn@angular2 polyfills.js:1220
angular2.dev.js:23501原始堆栈跟踪:
将数据发布到服务器时出错。我不知道出了什么问题。伙计们,有什么想法吗 你的错误很明显
EXCEPTION: TypeError: Cannot read property 'createPost' of undefined
这意味着this.\u httpService
未定义
我能看到的唯一一件事是导入中的单引号和双引号的混合,您应该将它们全部更改为单引号
例如,您的错误线路是使用双引号的线路(在其他使用双引号的线路中)
您应该将其更改为使用单引号
import {HttpService} from './http-service.ts';
也许你服务中的那些人也在制造麻烦
这是angular2的回购协议中跟踪的一个问题,并在TypeScript的回购协议中得到了回答
编辑
上述评论仍然有效,但我刚刚看到我认为(再次)是你的问题
你有两个构造函数
constructor(
private _formBuilder: FormBuilder) {
// ...
}
constructor(private _httpService: HttpService) {}
留一个
constructor(private _formBuilder: FormBuilder, private _httpService: HttpService) {
// ...
}
如果你把你的例子减少到最低限度,这对于你和阅读答案的人来说会容易得多,因为这是重新思考问题所必需的。是否只有在窗体有~20个控件时才会出现问题?在仍然出现错误的情况下,您可以删除多少个?您是否将
HttpService
添加到某个提供程序中(引导、根组件等)?如果是,代码到底是什么样子的?是的,它的included,GET方法工作正常,但是对于发布数据,它的给定错误。我改为单引号,但得到相同的错误。。谢谢你的回复
import {HttpService} from './http-service.ts';
constructor(
private _formBuilder: FormBuilder) {
// ...
}
constructor(private _httpService: HttpService) {}
constructor(private _formBuilder: FormBuilder, private _httpService: HttpService) {
// ...
}