2016-04-18 8 views
0

私はちょうどangular2.0を学び始めています。私が持っているコールサービスin Angular2.0

import {Component} from 'angular2/core'; 
import {FORM_DIRECTIVES,CORE_DIRECTIVES,FormBuilder, Validators,Control,ControlGroup } from 'angular2/common'; 
import { SampleService } from './sample.service'; 

@Component({ 
    selector: 'my-form', 

    templateUrl: 'app/form.component.html' 
    providers: [ 
    SampleService 
    ] 
}) 
export class FormComponent { 
    //loginForm: ControlGroup; 
    constructor(fb: FormBuilder) { 
    this.loginForm = new ControlGroup({ 
     email: new Control("", Validators.required), 
     password: new Control("", Validators.required) 
    }); 
    } 
    constructor(private _sampleService: SampleService){ 
    this._sampleService = _sampleService; 
    } 
    doLogin(event){ 
    this._sampleService.login() 
    .subscribe(
     data => /*this.countries = data, 
     error => this.error = "Region " + this.region + " is invalid."*/ 
     { 
     this.countries = data; 

     } 
    ); 
    } 

}; 

:これは私のtypescriptファイルは

<form [ngFormModel]="loginForm" (click)="doLogin($event)"> 
    <input ngControl="email" type="email" placeholder="Your email" required> 
    <input ngControl="password" type="password" placeholder="Your password" required> 
    <button type="submit">Log in</button> 
</form> 

です:私はすでに、私はここに私のcomponent.htmlファイルである私はangular2 のサービスを使用する方法を知らないangular1.Butのサービスを使用していますサンプルサービスを作成してデータを取得します。

import { Hero } from './hero'; 
import { Injectable } from 'angular2/core'; 
import {Http} from 'angular2/http'; 
import 'rxjs/Rx'; 
import {AppSettings} from './appSettings'; 
@Injectable() 
export class SampleService { 

    constructor(http: Http){ 
    this.http = http; 
    } 

    login(data){ 
    return this.http.get(AppSettings.API_ENDPOINT+"oceania").map(res => res.json(), err => err); 

    } 
} 

エラーは次のとおりです。

this._sampleService.login() is undefiend 
+0

コンパイル時または実行時にエラーはありますか? –

答えて

3

このクラスがサポートされていない2つのコンストラクタを持っています。あなたは、インスタンスのプロパティがあり、コンストラクタのパラメータにprivatepublicを追加する場合も、これは冗長と

constructor(private _sampleService: SampleService){ 
    this._sampleService = _sampleService; 
    } 

不要である1

export class FormComponent { 
//loginForm: ControlGroup; 
    constructor(fb: FormBuilder) { 
    this.loginForm = new ControlGroup({ 
    email: new Control("", Validators.required), 
    password: new Control("", Validators.required) 
}); 
    } 
    constructor(private _sampleService: SampleService){ 
    this._sampleService = _sampleService; 
} 
    doLogin(event){ 
     this._sampleService.login() 
    .subscribe(
     data => /*this.countries = data, 
     error => this.error = "Region " + this.region + " is invalid."*/ 
     { 
     this.countries = data; 

     } 
    ); 
    } 

} 

export class FormComponent { 
//loginForm: ControlGroup; 
    constructor(fb: FormBuilder, private _sampleService: SampleService) { 
    this.loginForm = new ControlGroup({ 
     email: new Control("", Validators.required), 
     password: new Control("", Validators.required) 
    }); 
    } 

    doLogin(event) { 
    this._sampleService.login() 
    .subscribe(
     data => /*this.countries = data, 
     error => this.error = "Region " + this.region + " is invalid."*/ 
     { 
     this.countries = data; 

     }); 
    } 
} 

のようにそれらをマージする必要があります既に宣言されている値とそれに割り当てられた値

constructor(private _sampleService: SampleService){ 
    // this._sampleService = _sampleService; 
    } 

変数がないため、コメントアウトされた行がスローされます(this._sampleSreviceのみ)。

+0

ありがとう............................................ – angular

+0

@ドリューモア、実際には、 '_sampleService'が存在しないので、' '冗長ではない' '無効な' 'と思います。存在しない変数にアクセスするとエラーが発生するでしょう。 –

+1

[plunkを参照してください](https://plnkr.co/edit/J0hzg8?p=preview) – drewmoore