Piszę komponent, w którym potrzebuję dostępu do elementu natywnego <audio controls>
. Robię to tak teraz przez coraz to w ngOnInit()
za pomocą ElementRef
jak ten this.elementRef.nativeElement.querySelector("audio");
Dostęp do zmiennej lokalnej z szablonu w kontrolerze w Angular2
Chociaż to działa myślę, że jest bardzo unelegant i Angular2 również warns of the risks when using ElementRef ..
Czy naprawdę nie ma prostszy sposób?
Czy mogę oznaczyć go jako zmienną lokalną z <audio controls #player>
i jakoś uzyskać dostęp do elementu macierzystego przez this.player
lub coś podobnego z kontrolera?
import {Component, OnInit, ElementRef, Input} from 'angular2/core';
@Component({
selector: 'audio-preview',
template: `
<audio controls>
<source [src]="src" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
`
})
export class AudioPreview implements OnInit {
@Input() src: string;
constructor(public elementRef: ElementRef) {}
ngOnInit() {
var audioElement = this.getAudioElement();
audioElement.setAttribute('src', this.src);
}
getAudioElement() : HTMLAudioElement {
return this.elementRef.nativeElement.querySelector("audio");
}
}
Dzięki! Po prostu wypróbowałem to i '' "' 'wydaje się działać tak samo jak' '' ' '' ... Jaka jest różnica? –
skovmand
@skovmand [attr.src] utwórz powiązanie z atrybutem elementu za pomocą metody ['setAttribute()'] (https://developer.mozilla.org/en/docs/Web/API/Element/setAttribute) DOM ('element.setAttribute ('src', src)'). '[src]' tworzy powiązanie z właściwością elementu (wystarczy ustawić go przez 'element.src = src') – alexpods
Muszę zapytać ... gdzie nauczyłeś się używać' # player' w szablonie, a następnie być w stanie uzyskać odniesienie do niego za pomocą 'ViewChild ('player')'? (Muszę zacząć czytać to, co czytasz, ponieważ nie mogę znaleźć tego rodzaju informacji w Angularnych dokumentach. [Strona API ViewChild] (https://angular.io/docs/ts/latest/api/ core/ViewChild-var.html) nie wyjaśnia tego.) –