【问题标题】:Cannot read property 'post' of undefined in angular7无法读取 angular7 中未定义的属性“帖子”
【发布时间】:2019-10-27 17:00:53
【问题描述】:

我需要在 Angular 7 中创建自定义验证。

写下这段代码:

CheckUserNameExisit(control: AbstractControl): { [key: string]: any } {
 console.log('in functions')
 return new Promise(resolve => {
  let httpClient: HttpClient;
  var userService = new UserService(httpClient);
  let usernameExist: Usernameexist;
  usernameExist = userService.InitialUserNameExist();
  usernameExist.UserName = control.value;
  console.log(usernameExist.UserName)
  userService.checkUsername(usernameExist)
    .subscribe(data => {
      if (data.success == false) {
        console.log(data.success)
        resolve({ 'usernameExists': false });
      } else {
        console.log(true)
        resolve(null);
      }
    });
});
}

这是UserSerivce

checkUsername(item: Usernameexist): Observable<GenericModel<Usermodel>> {
  console.log('go')
  return this.httpClient.post<GenericModel<Usermodel>>('https://localhost:44372/api/v1/User/FindbyName/', item);
}

但是当我需要使用此验证时,它会显示此错误:

错误错误:未捕获(承诺中):TypeError:无法读取未定义的属性“帖子” TypeError:无法读取未定义的属性“帖子” 在 UserService.push../src/app/services/user.service.ts.UserService.checkUsername

有什么问题吗?我该如何解决这个问题??

【问题讨论】:

  • 这里出了很多问题。不要误会,但我建议先深入阅读 javascript/typescript,然后阅读 angular.io 中列出的指南,然后阅读有关 rxjs 的内容,然后开始你的第一个真正的项目

标签: javascript angular typescript angular7


【解决方案1】:

您似乎尚未添加HTTPClientModuleAs Angular documentation says:

app.module.ts:

import { NgModule }         from '@angular/core';
import { BrowserModule }    from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    BrowserModule,
    // import HttpClientModule after BrowserModule.
    HttpClientModule,
  ],
  declarations: [
    AppComponent,
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {}

和 yourservice.ts:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class YourService {
  constructor(private http: HttpClient) { }
}

【讨论】:

    【解决方案2】:

    userservice中,注入Httpclient

    import { HttpClient } from '@angular/common/http';
    
    constructor(private http: HttpClient) { }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-13
      • 2017-09-24
      • 1970-01-01
      • 2019-01-17
      • 2019-08-31
      • 2021-06-29
      • 1970-01-01
      • 2016-07-06
      相关资源
      最近更新 更多