我非常确定我正确使用了ngModel
,但是当文本字段更改时,我的模型将不会更新。我已经在我的应用程序中多次使用了这个星座,没有任何问题。我坐在上面已经有一段时间了,看不到我的错误,也许再换一双眼睛会有所帮助。是ngIf
影响绑定吗?
我正在使用Angular5。还有Maseemann Components
更新:
我编辑了第一个文本字段进行如下测试:
<p>
<mdl-textfield type="text" label="Name" [(ngModel)]="assignment.name" (ngModelChange)="log()" floating-label></mdl-textfield>
{{assignment.name}}
</p>
并且按预期方式工作,直接显示输入。我已经检查了几次拼写,但是没有发现任何错误。
我的模板:
<mdl-card mdl-shadow="2" *ngIf="state === 0">
<mdl-card-title>
<h2 mdl-card-title-text>Assignment erstellen</h2>
</mdl-card-title>
<mdl-card-supporting-text>
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--7-col">
<p>
<mdl-textfield type="text" label="Name" [(ngModel)]="assignment.name" (ngModelChange)="log()" floating-label></mdl-textfield>
</p>
<p>
<mdl-select [(ngModel)]="assignment.lang" placeholder="Programmiersprache auswählen">
<mdl-option [value]="'c'">C / C++</mdl-option>
<mdl-option [value]="'java'">Java</mdl-option>
<mdl-option [value]="'py'">Python</mdl-option>
<mdl-option [value]="'m'">Matlab</mdl-option>
</mdl-select>
</p>
<p>
<mdl-textfield type="number" label="Punkte" [(ngModel)]="assignment.points_recommended" floating-label></mdl-textfield>
</p>
<p>
<mdl-textfield type="text" label="Executionfilename" [(ngModel)]="assignment.execution_filename" floating-label></mdl-textfield>
</p>
<p>
<mdl-textfield type="text" label="Outputfilenames" [(ngModel)]="assignment.output_files" floating-label></mdl-textfield>
</p>
<div class="mdl-file_upload">
<h6>Evaluationfile:</h6>
<label for="file-upload" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored">
<span>Datei auswählen</span>
</label>
<mdl-textfield type="text" [(ngModel)]="assignmentFile.name" floating-label disabled></mdl-textfield>
<input type="file" id="file-upload" (change)="onFileSelect($event.target.files)">
</div>
<p>
<mdl-switch [(ngModel)]="assignment.visible_for_others" mdl-ripple>Öffentlich</mdl-switch>
</p>
<p>
<mdl-switch [(ngModel)]="assignment.text_editor_available" mdl-ripple>Online-Texteditor</mdl-switch>
</p>
</div>
<div class="mdl-cell mdl-cell--5-col">
<h6>Beschreibung</h6>
<p>...</p>
</div>
</div>
</mdl-card-supporting-text>
<mdl-card-actions mdl-card-border>
<button (click)="submitAssignment()" mdl-button mdl-colored mdl-ripple mdl-colored="primary">Nächster Schritt</button>
</mdl-card-actions>
</mdl-card>
我的控制器:
export class AssignmentNewComponent implements OnInit {
public state: number = 0;
public assignment: Assignment = new Assignment(null, this.authService.getAccountId());
public assignmentFile: File = new File([''], 'Datei auswählen');
constructor(
private authService: AuthService,
private assignmentService: AssignmentService,
) { }
ngOnInit() {
this.testcases.push(new AssignmentTestCase());
}
onFileSelect(files: FileList): void {
this.assignmentFile = files[0];
}
setState(state: number): void {
this.state = state;
}
submitAssignment(): void {
Object.keys(this.assignment).forEach(
key => console.log(key, this.assignment[key])
)
}
next(): void {
this.state++;
}
previous(): void {
this.state--;
}
log(){
console.log(this.assignment);
}
}
我的模特:
export class Assignment {
public id: number;
public admin: number;
public name: string;
public lang: string;
public points_recommended: number;
public execution_filename: string;
public output_files: string;
public evaluation_file: string;
public visible_for_others: boolean;
public text_editor_available: boolean;
public created_at: string;
public updated_at: string;
constructor(
id?: number,
admin?: number,
name?: string,
lang?: string,
points_recommended?: number,
execution_filename?: string,
output_files?: string,
evaluation_file?: string,
visible_for_others?: boolean,
text_editor_available?: boolean,
created_at?: string,
updated_at?: string,
){
this.id = id || undefined;
this.admin = admin || undefined;
this.name = name || undefined;
this.lang = lang || undefined;
this.points_recommended = points_recommended || undefined;
this.execution_filename = execution_filename || undefined;
this.output_files = output_files || undefined;
this.evaluation_file = evaluation_file || undefined;
this.visible_for_others = visible_for_others || undefined;
this.text_editor_available = text_editor_available || undefined;
this.created_at = created_at || undefined;
this.updated_at = updated_at || undefined;
}
}
答案 0 :(得分:0)
这个问题真的很容易解决。我有一个角度ID <span #assignment>..
,将我的工作分配变量新绑定到该工作分配。只是一个命名问题。我已将其重命名,现在它可以按预期工作。