Я пытаюсь динамически настроить событие нажатия кнопки, используя fromEvent
и defer
модули rxjs
. Он работает нормально при использовании обычной кнопки html, но не работает с кнопкой Angular Material.
Вот код, который отлично работает с кнопкой Normal:
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { defer, fromEvent } from 'rxjs';
import { map, tap } from 'rxjs/operators';
@Component({
selector: 'app-test',
template: `
<button #testBtn>Click me</button>
`
})
export class TestComponent implements OnInit {
@ViewChild('testBtn', { static: true }) testBtn: ElementRef<HTMLButtonElement>;
event$ = defer(() => fromEvent(this.testBtn.nativeElement, 'click')).pipe(
map(() => new Date().toString()),
tap(console.log)
)
constructor() { }
ngOnInit() {
this.event$.subscribe();
}
}
А здесь это код, который не работает с Angular Material Button
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { defer, fromEvent } from 'rxjs';
import { map, tap } from 'rxjs/operators';
@Component({
selector: 'app-test',
template: `
<button mat-raised-button #testBtn>Click me</button>
`
})
export class TestComponent implements OnInit {
@ViewChild('testBtn', { static: true }) testBtn: ElementRef<HTMLButtonElement>;
event$ = defer(() => fromEvent(this.testBtn.nativeElement, 'click')).pipe(
map(() => new Date().toString()),
tap(console.log)
)
constructor() { }
ngOnInit() {
this.event$.subscribe();
}
}
Я не мог догадаться, почему эта проблема происходит.
Можете ли вы помочь мне понять это?