Tengo un caso en mi aplicación angular donde necesito cambiar el observable si el valor inicial NEVER fue:
export class MyComponent { @Input() isInitiallyOpen$?: Observable<boolean> = NEVER; constructor(private myService: MyService) { this.isOpen$ = this.isInitiallyOpen$ ?? this.myService.isOpen$; // NOT WORKING // this.isOpen$ = NEVER at this point, and not this.myService.isOpen$ } } Sé que rxjs NEVER es básicamente new Observable<never>(noop()) . Pero mi pregunta es, ¿hay alguna manera de saber que el flujo isInitiallyOpen$ realmente tiene un valor NEVER ?
Si marca NEVER Observable en el proyecto GitHub, puede ver que es básicamente un Observable vacío con una función noop:
export const NEVER = new Observable<never>(noop)
Por lo tanto, puede verificar si la variable es igual a NEVER . A continuación hice algunas pruebas para que usted pueda trabajar con ellas.
const { NEVER, Observable, noop } = rxjs; const foo$ = NEVER const bar$ = NEVER console.log("foo$ === bar$: ", foo$ === bar$) // true console.log("foo$ === NEVER: ", foo$ === NEVER) // true console.log("foo$ === Observable: ", foo$ === Observable) // false console.log("foo$ === new Observable(): ", foo$ === new Observable()) // false console.log("foo$ === Observable(() => {}): ", foo$ === new Observable(() => {})) // false console.log("foo$ === Observable(noop): ", foo$ === new Observable(noop)) // false <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.4.0/rxjs.umd.min.js"></script>