使用香蕉盒语法的双向双向数据绑定不起作用

问题描述 投票:0回答:1

我正在尝试进行两种方式的数据绑定,以便每当子级更改子级时,子级就可以更新父级中的属性(file

父中的值永远是未定义的。我在做什么错?

在子组件(<cb-drag-and-drop-file>):]中>

@Output() public fileChange = new EventEmitter<File>();
private fileValue: File;

@Input()
get file() {
    return this.fileValue;
}

set file(value) {
    this.fileValue = value;
}

private setDocument(uploadedFile: File): void {
    if (this.isFilesizeValid && this.isFileExtensionValid) {
        this.file = uploadedFile;
        this.fileChange.emit(uploadedFile);
        this.isFileValidAndUploaded = true;
    }
}

private clearOldFileReference(): void {
    this.file = undefined;
    this.fileChange.emit(undefined);
}

在父组件ts文件中:

file;
ngOnInit() {
   interval(1000).pipe(mapTo(this.file), tap(x => console.log(x))).subscribe(console.log);
}

在父组件html文件中:

<cb-drag-and-drop-file fxFlex
                       [allowedFileTypes]="[FILE_TYPE_ENUM.Xlsx]"
                       [(file)]="file"
                       description="faslkdfjlsdkjf">
</cb-drag-and-drop-file>

当然,我不必在父级中强制性地设置文件,这似乎不是被动的,这是我认为Angular想要使用事件发射器的目的?这也意味着我不能使用香蕉盒语法,不是吗?我已经向父级添加了fileChange,使用香蕉框语法时永远不会将其触发。

我正在尝试进行两种方式的数据绑定,以使子级可以在子级更改父级中的属性(文件)时对其进行更新。父级中的值永远是未定义的。我是什么...

angular rxjs rxjs6
1个回答
0
投票

<< [Template

© www.soinside.com 2019 - 2024. All rights reserved.