Angular 当我点击表单提交按钮时它不起作用

Angular forms submit button doesn't work when I click on it

我使用 Angular 表单来更新数据,但是提交按钮不起作用,即使后端的更新方法运行良好,数据也没有得到更新。我做错了什么?

这是我的 angular 组件 HTML :

<form (ngSubmit)="onSubmit()">
  <div>
    <label for="title">
      Title
    </label>
    <input id="title" type="text" [(ngModel)]="project.title" name="title">
  </div>

  <div>
    <label for="description">
      Description
    </label>
    <input id="description" type="text" [(ngModel)]="project.description" name="description">
  </div>

  <button class="button" type="submit">Save</button>
</form>

打字稿:

import {Component, OnInit} from '@angular/core';
import {ProjectService} from "../project.service";
import {Project} from "../project";
import {Subscription} from "rxjs";
import {ActivatedRoute, Router} from "@angular/router";
@Component({
  selector: 'app-project-edit',
  templateUrl: './project-edit.component.html',
  styleUrls: ['./project-edit.component.css']
})
export class ProjectEditComponent implements OnInit {
project: Project;
private sub : Subscription;
constructor(
          private projectService: ProjectService,
          private route: ActivatedRoute,
          private router: Router
) {

}

ngOnInit() {
this.sub = this.route.params.subscribe(params => {
  let id = +params['id'];
  this.projectService.getProject(id)
    .then(project => this.project = project);
});
}

onSubmit() {
  this.updateProject();
}

updateProject() {
 this.projectService.updateProject(this.project.id, this.project)
  .then(pr => this.project = new Project())
  }

}

这是具有 updateProject 功能的项目服务:

import {Injectable} from "@angular/core";
import {Project} from "./project";

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

@Injectable()
export class ProjectService {
  private baseUrl = 'http://localhost:8080';

  constructor(private  http: HttpClient) {
  }

  getProjects(): Promise<Project[]> {
    return this.http.get(this.baseUrl + '/api/project/')
      .toPromise()
      .then(response => response as Project[])
      .catch(this.handleError);
  }

  getProject(id: number): Promise<Project> {
    return this.http.get(this.baseUrl + '/api/project/' + id)
      .toPromise()
      .then(response => response as Project)
      .catch(this.handleError);
  }

  createProject(project: Project) {

    return this.http.post(this.baseUrl + '/api/projects', project);

  }

  updateProject(id: number, newProjectData: Project): Promise<Project> {
    return this.http.put(this.baseUrl+'/api/projects' + id,newProjectData)
      .toPromise()
      .then(response => response as Project)
      .catch(this.handleError);
  }

  deleteProject(id: number) {

    return this.http.delete(this.baseUrl+'/api/projects' + id);

  }

  private handleError(error: any): Promise<any> {
    console.error('Some error occured', error);
    return Promise.reject(error.message || error);
  }
}

在您的 ProjectEditComponent 中初始化您的 project 对象。像这样:

project: Project = {
    title: "",
    description: ""
};