加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – Reactive Forms正确地将Form Value转换为Model Objec

发布时间:2020-12-17 09:04:23 所属栏目:安全 来源:网络整理
导读:在创建模型驱动模板Reactive表单时,我从Form Value创建模型对象时.然后模型对象失去其TYPE. 对于一个简单的例子: 模特班书: export class Book { public name: string; public isbn: string;} 零件: @Component({ selector: 'app-book',templateUrl: './b
在创建模型驱动模板Reactive表单时,我从Form Value创建模型对象时.然后模型对象失去其TYPE.

对于一个简单的例子:

模特班书:

export class Book {
  public name: string;
  public isbn: string;
}

零件:

@Component({
  selector: 'app-book',templateUrl: './book.component.html',styleUrls: ['./book.component.css']
})
export class BookComponent implements OnInit {

  bookFormGroup: FormGroup;
  private newBook: Book = new Book();

  constructor(private fb: FormBuilder) {
    this.bookFormGroup = this.fb.group({
      name: new FormControl(''),isbn: new FormControl('')
    });
  }

  ngOnInit() {
  }

  addBook() {
    console.log('submit');
    this.newBook = <Book> this.bookFormGroup.value;
    console.log(this.newBook instanceof Book);
    console.log(this.newBook);
  }

}

HTML:

<form [formGroup]="bookFormGroup" (ngSubmit)="addBook()">
    <input type="text" formControlName="name" >
    <input type="text" formControlName="isbn" >

    <input type="submit" value="Submit">
</form>

在上面的例子中,在填充newBook实例后将其转换为普通的Object

即,
在此之后.newBook =< Book> this.bookFormGroup.value;

这个.newBook instanceof Book变得虚假

我该如何防止这种情况?
或者有更好的方法来实现这一目标吗?

注意:我尝试使用JSON.parse(),但它仍然相同.

此构造函数将适用于任何类型,并将分配任何匹配的字段.
export class Book {
  public constructor(init?: Partial<Book >) {
        Object.assign(this,init);
    }
}

所以你将能够做到这一点:

this.newBook = new Book(this.bookFormGroup.value);

如果Book课程将来会有任何变化并且变得更大,这将为您提供大量工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读