【问题标题】:angular 5 save form data in modal class in an array and show it in tableangular 5将模态类中的表单数据保存在数组中并在表格中显示
【发布时间】:2018-08-06 12:36:53
【问题描述】:

我想将表单数据保存在模型类中并在表格中显示。 一旦提交表格。我通过 this.user.addOject() 方法将数据推送到类中。但数组总是只显示最后提交的表单值。

在 sajeet 提到的编辑之后:我得到了 StaticInjectorError

this.user.getUsers(); 数组数据仅显示最后提交的表单数据。 {userid: 1, firstName: "ffrere", lastName: "trtr", mobile: "355667676878", accsprofile: Array(1)}

这是我的模型类

export interface IUser {
    userid: number;
    firstName: string;
    lastName: string;
    mobile: string;
    accsprofile: string[];
}
@Injectable()
export class UserService {
    user: IUser;
    userlist: Array<object> = [];

    constructor() {}

    addOject(): void {
       this.user = user;
       this.userlist.push(this.user);
     }

    getUsers(): any {
        return this.userlist;
    }
}

UserDialogue.component.ts

export class UserdialogueComponent implements OnInit {

  userList: IUser[];      
  user: Usermodel;

  constructor(private dialog: MatDialog, private user: UserService) { }

  ngOnInit() {
  }
  openDialog() {

    const dialogConfig = new MatDialogConfig(); 
    const dialogRef = this.dialog.open(UserformComponent, dialogConfig);

    dialogRef.afterClosed().subscribe(result => {    
      const userData = {
        userid: result.data.userid,
        firstName: result.data.userid,
        lastName: result.data.userid,
        mobile: result.data.userid,
        accsprofile: result.data.userid
      };           
      this.user.addOject(userData);         
      console.log(this.user.getUsers()); // always showing last inserted record.         
    });
  }
}

数组只显示最后输入的表单数据。

【问题讨论】:

    标签: angular forms typescript dependency-injection model


    【解决方案1】:

    你应该使用服务而不是类,

    import { Injectable } from '@angular/core';
    
    @Injectable({
      providedIn: 'root',
    })
    export class userService {
      user: IUser;
      userlist: Array<object> = [];
    
      constructor(user: IUser) {
    
       }
    
        addOject(): void {
           this.userlist.push(this.user);
         }
    
        getUsers(): any {
            return this.userlist;
        }
    
    }
    

    并在你的组件中注入这个特定的服务,休息应该可以正常工作

    【讨论】:

    • 我收到错误--"typeof Usermodel' 不可调用。你的意思是包含'new'"我--我将 UserModel 更改为 UserService 并像这样插入 UserdialogueComponent 构造函数:构造函数(私人对话:MatDialog,私人用户:Usermodel)。并调用了添加对象。
    • 用户是 UserModel 类型
    • 出现的第一个问题是我必须使用 angular 5。因此,带有providedIn root 的注射器无法正常工作。在用户服务模型中,我删除了构造函数中的参数并将其更改为 addOject(user: IUser): void { this.user = user; this.userlist.push(this.user); }。它仍然无法正常工作。 userservice 类型的用户。不是用户模型。我将再次编辑问题。
    • Sajeetharan,我编辑了代码。我收到 StaticInjectorError。请帮帮我。 tq
    • 需要在module.ts下添加服务
    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2018-11-15
    • 2021-03-22
    • 2020-09-06
    相关资源
    最近更新 更多