知道新选择的Angular 2 ngModel形式

时间:2017-08-03 06:20:14

标签: forms angular

让我们采取这种形式:

<form name="setQuestions_form" (ngSubmit)="set_questions()">
    <ng-select [multiple]="true" [options]="questions" [(ngModel)]="selectedQuestions" name="selectedQuestions"></ng-select>
    <button>send</button>
</form>

selectedQuestions是一系列问题:

selectedQuestions: Question[] = [];

方法set_questions将数据发送到后端:

this.questionService.create(this.selectedQuestions).subscribe();

所以我的数据库第一次是空的,但第二次我已经保存了问题(可以使用其他功能进行自定义,所以我不希望它们被删除或更改),是什么方式只在数据库中插入选择了新问题? Angular 2中的任何内容都可以在表单中了解选择中的新选项,还是应该在后端进行工作,将已保存的问题与新问题进行比较?

示例:

[ ] Question 1
[X] Question 2
[X] Question 3
[ ] Question 4

[ ] Question 1
[ ] Question 2
[X] Question 3
[X] Question 4

在这里,我想知道问题2已被删除,问题4已被添加,我不关心未触及的问题,因此我可以向后端发送类似这样的内容:

- Added: Question 4
- Removed: Question 2

忽略问题1和问题3(已经检查但不是新的)

1 个答案:

答案 0 :(得分:0)

这是md-checkbox,multi-select.html:

的示例
<div>
    <md-checkbox name="Q1" (change)="onCheckChange($event)">Question 1</md-checkbox>
    <md-checkbox name="Q2" (change)="onCheckChange($event)">Question 2</md-checkbox>
    <md-checkbox name="Q3" (change)="onCheckChange($event)">Question 3</md-checkbox>
    <md-checkbox name="Q4" (change)="onCheckChange($event)">Question 4</md-checkbox>
</div>

这里的组件是multi-select.ts:

import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'multi-select',
    templateUrl: 'multi-select.html'
})

export class MultiSelect implements OnInit {
    constructor() { }

    ngOnInit() { }

    onCheckChange($event) {
        //console.log($event);
        console.log($event.source.name,"=",$event.checked);
    }
}

原因在相应模块的导入字段中有import { MdCheckboxModule } from '@angular/material';和一个条目。 然后console.log是:

Q4 = true
Q2 = false