В этом компоненте, когда я вызываю функцию getCurrentSalahOrIqamah в ngOninit, мой компонент не загружается в браузере. и продолжайте застревать. Я пробовал использовать оба компонента с отложенной загрузкой и активной загрузкой, но проблема не была решена.
import { Component, OnDestroy, OnInit } from '@angular/core';
import { SubSink } from 'subsink';
import { interval, map } from 'rxjs';
@Component({
selector: 'app-timingscreen',
standalone: true,
imports: [],
providers: [],
templateUrl: './timingscreen.component.html',
styleUrl: './timingscreen.component.scss'
})
export class TimingscreenComponent {
private subs = new SubSink()
ngOnInit(): void {
this.getCurrentSalahOrIqamah()
}
getCurrentSalahOrIqamah() {
this.subs.sink = interval(1000).pipe(
map(() => {
const date = new Date();
return date.getHours() * 3600 + date.getMinutes() * 60 + date.getSeconds();
})
).subscribe(
{
next:(timeInSeconds:number)=>{
console.info(timeInSeconds)
}
}
)
}
ngOnDestroy(): void {
this.subs.unsubscribe()
}
}
Угловая версия: «^17.2.0». Версия Rxjs: «~ 7.8.0»
позвольте мне создать еще одно угловое приложение. и попробуйте с этим кодом. Я буду обновлять вас здесь
В Angular 17 рендеринг на стороне сервера (SSR) включен по умолчанию. Однако могут возникнуть трудности с завершением процесса рендеринга, если ваш код содержит интервалы, которые постоянно меняются. Следующий код может помочь решить эту проблему:
import { isPlatformBrowser } from '@angular/common';
import { Component, DestroyRef, OnInit, PLATFORM_ID, inject } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { interval, map } from 'rxjs';
import { SubSink } from 'subsink';
@Component({
selector: 'app-timingscreen',
standalone: true,
imports: [],
providers: [],
templateUrl: './timingscreen.component.html',
styleUrl: './timingscreen.component.scss'
})
export class TimingscreenComponent implements OnInit {
private subs = new SubSink()
private destroyRef = inject(DestroyRef);
private platformId = inject(PLATFORM_ID);
ngOnInit(): void {
if (isPlatformBrowser(this.platformId)) {
this.getCurrentSalahOrIqamah();
}
}
getCurrentSalahOrIqamah() {
this.subs.sink = interval(1_000).pipe(
takeUntilDestroyed(this.destroyRef),
map(() => {
const date = new Date();
return date.getHours() * 3_600 + date.getMinutes() * 60 + date.getSeconds();
})
).subscribe(
{
next: (timeInSeconds: number) => {
console.info(timeInSeconds);
}
}
);
}
}
В этом коде нет операции блокировки потоков, поэтому маловероятно, что то, что вы говорите, является фактом. Пожалуйста, предоставьте минимальный воспроизводимый пример вашей проблемы, чтобы мы могли продолжить расследование.