编辑功能错误

问题描述 投票:1回答:2

我试图获取有关我想在表单中编辑的用户的数据,但它得到了关于获取这些数据的同一行的错误:**** this.user = data


这是:edit-user.component.ts:

 import { Component, OnInit } from '@angular/core';
 import {User} from '../../model/model.user';
 import {ActivatedRoute, Router} from '@angular/router';
 import {UsersService} from '../../services/users.service';

 @Component({
 selector: 'app-edit-user',
 templateUrl: './edit-user.component.html',
 styleUrls: ['./edit-user.component.css']
  })
export class EditUserComponent implements OnInit {
 mode = 1 ;
 user: User = new User ();
 idUser: number ;

 constructor(public activatedRoute: ActivatedRoute , public userservice: 
 UsersService , public router: Router) {
this.idUser = activatedRoute.snapshot.params['id'] ;
 }

 ngOnInit() {
 this.userservice.getUser(this.idUser)
  .subscribe(data => {
 this.user = data ;
 } , err => {
    console.log(err) ;
  }) ;
  }

 updateUser () {
 this.userservice.updateUser(this.user)
 .subscribe(data => {
  console.log(data) ;
  alert('User updated !') ;
  this.router.navigate(['users']) ;
  } , err => {
console.log(err);
alert('Error') ;
 }) ;
 }

 }

在users.component.ts中,我创建了与按钮相关的功能:

   onEditUser (id: number) {
   this.router.navigate(['editUser', id]);
    }

在user.service.ts中我做了这两个:

    getUser(id: number) {
    return this.http.get('http://localhost:8081/users/' + id);
    }
     updateUser(user: User) {
     return this.http.put('http://localhost:8081/users/' + user.id , user);
   }

但是在我告诉你关于this.user = data的行中我得到了这个错误

        src/app/edit-user/edit-user.component.ts(23,9): error TS2322: Type 
       'Object' is not assignable to type 'User'.

       The 'Object' type is assignable to very few other types. Did you mean 
       to use the 'any' type instead?

       Property 'id' is missing in type 'Object'.
angular spring-boot
2个回答
0
投票

尝试

user: any={};

代替

 user: User = new User ();

0
投票

当您订阅htt.get('url');时,它将返回响应对象。所以你需要在传递给EditUserComponent之前解析它。

从服务中的RxJS导入地图运算符,如import 'rxjs/add/operator/map';

然后编辑如下的getUser方法

    getUser(id: number) {
        return this.http.get('http://localhost:8081/users/' + id)
            .map(response => response.json());
    }

希望这能解决你的问题!快乐编码:)

© www.soinside.com 2019 - 2024. All rights reserved.