私のエラーが見つかりません。Angular2別のサービスにサービスを注入
app.module.ts
...
providers: [ValidateService,AuthService]
...
私は私のregister.component.tsで次の操作を行います。
ユーザーがデータベースに既に存在すると予想したがって、私は、ユーザーがコンソールに存在し得るようimport {AuthService} from '../../services/auth.service';
...
constructor(private _validateService: ValidateService,
private _fms: FlashMessagesService,
private _authService: AuthService,
private _router: Router
) { }
...
ngOnInit() {
this._authService.uniqueUser({username:'zomh'}).subscribe(data => {
console.log("data.success: "+data.success);
if(!data.success) { // Username already exists
console.log('exists');
}
else {
console.log('does not exist');
}
});
}
作品。私はCannot read property _authService of undefined
例外
を取得
import { AuthService } from './auth.service';
import { Injectable } from '@angular/core';
import { FormControl } from '@angular/forms';
@Injectable()
export class ValidateService {
constructor(public _authService: AuthService) { }
validateRegister(user) {
if(user.name == undefined || user.email == undefined || user.username == undefined || user.password == undefined)
return false;
else
return true;
}
validateEmailPattern(c: FormControl) {
const re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (re.test(c.value))
return null;
else
return {invalidPattern:true};
}
validateUsernamePattern(c: FormControl) {
const re = /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/
if (re.test(c.value))
return null;
else
return {invalidPattern:true};
}
validateUsernameIsUnique (c: FormControl) {
let ret:any;
if (c.value.length >= 3)
{
console.log(c.value);
this._authService.uniqueUser({username:'zomh'}).subscribe(data => {
if(!data.success) { // Username already exists
console.log('call from service: exists');
}
else {
console.log('call from service: does not exist');
}
});
}
return {usernameIsTaken:true};
}
}
しかし、ここで:
私はかなり、かなり私のvalidate.service.tsで非常に同じことを(私はこの時点にそれを壊した)を行います私にとっては、サービスが正しく注入されなかったように見えます。しかし私は私の誤りを見つけることができません。
更新1: これで、authサービスコールをコンストラクタとその動作にコピーしました。したがって、これはいくつかある必要があります。私はthis._authServiceの値をコンストラクタの外の他のメソッドから取得できません。
@Injectable()
export class ValidateService {
constructor(private _authService: AuthService) {
this._authService.uniqueUser({ username: 'zomh' }).subscribe(data => {
if (!data.success) { // Username already exists
console.log('call from service: exists');
}
else {
console.log('call from service: does not exist');
}
});
}
新しい行を削除しましたか?残念ながら、まだ未定義のエラー – user3169083
は、あなたの 'validateUsernameIsUnique'メソッドのすべてのコードですか?もしそうなら、あなたの括弧が正しく一致していないように見えるからです。 – Pytth
私はメインポストを更新しましたので、ValidaiteServiceの完全なコードを見ることができます – user3169083