У меня есть компонент, который содержит два подкомпонента, подкомпонент идентичен:
<!-- Some code ... -->
<app-upload-button
#idBook
[accept]="'image/*'"
(loadend)="onImageLoaded('#this-idbook-preview')"
>
</app-upload-button>
<!-- Some code ... -->
<app-upload-button
#userIdBook
[accept]="'image/*'"
(loadend)="onImageLoaded('#this-user-idbook-preview')"
>
</app-upload-button>
<!-- Some code ... -->
Как мы видим, два элемента имеют разные ссылки #idBook
и #userIdBook
, а также строку, переданную вфункции onImageLoaded
отличаются '#this-idbook-preview'
и '#this-user-idbook-preview'
.
Моя проблема в том, что независимо от того, взаимодействую ли я с #idBook
или #userIdBook
, кажется, что #idBook
всегда заменяет другойэлемент.Когда я проверяю строку в onImageLoaded
, я всегда получаю '#this-idbook-preview'
, даже если я нажму на второй элемент.Кроме того, изменяются только переменные первого элемента, второй всегда неизменен.
В чем здесь проблема?И как это исправить?
Редактировать: UploadButtonКомпонентный код
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-upload-button',
templateUrl: './upload-button.component.html',
styleUrls: ['./upload-button.component.css']
})
export class UploadButtonComponent implements OnInit {
@Input() accept: string;
@Output() loadend: EventEmitter<void>;
file: File;
fileData: string;
constructor() {
this.loadend = new EventEmitter();
}
ngOnInit() {
if (this.accept === undefined) {
this.accept = '*';
}
}
readFile(): void {
const reader = new FileReader();
reader.onloadend = (event: any) => {
this.fileData = event.target.result;
this.loadend.emit();
};
reader.readAsDataURL(this.file);
}
onChange(event: any): void {
this.file = event.target.files[0];
this.readFile();
}
}
Редактировать 2: Мини-проект
Я создал мини-проект, чтобы показать проблему, ссылка здесьhttps://drive.google.com/open?id=1yafbuiKYUQ-POeNAXHu0ATyo8l84ydCE