让我们采取这种形式:
<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(已经检查但不是新的)
答案 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