【问题标题】:Angular 6: ERROR TypeError: Cannot read property 'toLowerCase' of undefinedAngular 6:错误类型错误:无法读取未定义的属性“toLowerCase”
【发布时间】:2018-10-24 08:19:35
【问题描述】:

我正在以关于用户的角度六创建 CRUD 应用程序,当我尝试添加新用户时,我收到以下错误:

这是我得到的错误:

core.js:12301 ERROR TypeError: Cannot read property 'toLowerCase' of undefined
    at HttpXsrfInterceptor.push../node_modules/@angular/common/fesm5/http.js.HttpXsrfInterceptor.intercept (http.js:1718)
    at HttpInterceptorHandler.push../node_modules/@angular/common/fesm5/http.js.HttpInterceptorHandler.handle (http.js:1134)
    at HttpInterceptingHandler.push../node_modules/@angular/common/fesm5/http.js.HttpInterceptingHandler.handle (http.js:1769)
    at MergeMapSubscriber.project (http.js:974)
    at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._tryNext (mergeMap.js:61)
    at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._next (mergeMap.js:51)
    at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next (Subscriber.js:54)
    at Observable._subscribe (scalar.js:5)
    at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable._trySubscribe (Observable.js:43)
    at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe (Observable.js:29)

这里是添加用户组件的html:

<div class="container add-user">
  <div class="col-md-6">
    <h2 class="text-center">Add User</h2>
    <form [formGroup]="addForm" (ngSubmit)="onSubmit()">
      <div class="form-group">
        <label for="email">Email address:</label>
        <input type="email" formControlName="email" placeholder="Email" name="email" class="form-control" id="email">
      </div>

      <div class="form-group">
        <label for="firstName">First Name:</label>
        <input formControlName="firstName" placeholder="First Name" name="firstName" class="form-control" id="firstName">
      </div>

      <div class="form-group">
        <label for="lastName">Last Name:</label>
        <input formControlName="lastName" placeholder="Last name" name="lastName" class="form-control" id="lastName">
      </div>

      <button class="btn btn-success">Update</button>
    </form>
  </div>
</div>

这里是ts文件:

import { Component, OnInit } from '@angular/core';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
import {UserService} from '../service/user.service';
import {first} from 'rxjs/operators';
import {Router} from '@angular/router';

@Component({
  selector: 'app-add-user',
  templateUrl: './add-user.component.html',
  styleUrls: ['./add-user.component.scss']
})
export class AddUserComponent implements OnInit {

  constructor(private formBuilder: FormBuilder, private router: Router, private userService: UserService) { }

  addForm: FormGroup;

  ngOnInit() {

    this.addForm = this.formBuilder.group({
      id: [],
      email: ['', Validators.required],
      firstName: ['', Validators.required],
      lastName: ['', Validators.required]
    });

  }

  onSubmit() {
    this.userService.createUser(this.addForm.value)
      .subscribe( data => {
        this.router.navigate(['list-user']);
      });
  }

}

这里是用户服务:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { User } from '../model/user.model';

@Injectable({
  providedIn: 'root'
})
export class UserService {

  constructor(private http: HttpClient) { }
  baseUrl: 'http://locahost:4200/users';

  getUsers() {
    return this.http.get<User[]>(this.baseUrl);
  }
  getUserById(id: number) {
    return this.http.get<User>(this.baseUrl + '/' + id);
  }
  createUser(user: User) {
    return this.http.post(this.baseUrl, user);
  }
  updateUser(user: User) {
    return this.http.put(this.baseUrl + '/' + user.id, user);
  }
  deleteUser(id: number) {
    return this.http.delete(this.baseUrl + '/' + id);
  }
}

我尝试了不同的方法,但无法解决问题:)

我在我的应用程序中做错了什么?任何帮助将不胜感激,谢谢

【问题讨论】:

    标签: javascript angular html typescript angular6


    【解决方案1】:

    改变

    baseUrl: 'http://locahost:4200/users';
    

    baseUrl= 'http://locahost:4200/users';
    

    因为baseUrl的类型是字符串

    【讨论】:

    • 错误消失了我会尽快接受你的回答,当我点击更新添加新用户时我还有一个问题,我得到以下错误:OPTIONS http://locahost:4200/users net::ERR_NAME_NOT_RESOLVED我需要改变什么?
    • @user9964622 你有在http://locahost:4200/users 运行的实际 api 还是模拟 api?它无法找到 api
    • 你在更新功能中尝试访问的url是否存在?
    • 我想使用 mock api ,没有 firebase 或 mongo ,但我不知道该怎么做,任何帮助将不胜感激
    • @hana_wujira 不,我正在学习被困在这里,我需要做什么才能将输入的数据保存为模型,没有 firebase 或 mongo 是否可能?
    【解决方案2】:

    错误已解决!!! 错误是由于冒号引起的:

    baseUrl: 'http://locahost:4200/users';
    

    使用 '=' 代替 ':' 因为 baseUrl 是字符串。

    baseUrl='http://locahost:4200/users';
    

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 2019-04-15
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多