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) {
   // ...
}