Спасибо за все ответы.
Я все еще хочу перехватить событие resise в сервисе, но благодаря @ABOS и некоторым учебникам по взаимодействию компонентов я получил идею использовать корневой компонент для отлова screnзатем событие size, чтобы прокормить мой сервис изменениями, которые можно наблюдать; таким образом, все подписанные компоненты получат значения css точки останова
. Больше не нужно говорить о моей реализации
app.component
import { Component, OnInit, HostListener } from '@angular/core';
import { BreakPointService } from './providers/break-point.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'twithashWebApp';
css_parent = '';
breakPointValue: number;
constructor() {
}
ngOnInit() {
BreakPointService.current_css.subscribe(value => {
console.log('value is ' + value);
this.css_parent = JSON.parse(value).css_parent;
});
}
@HostListener('window:resize', ['$event'])
onResize(event) {
console.log();
this.breakPointValue = window.innerWidth;
console.log(this.breakPointValue);
if (this.breakPointValue > 768) {
console.log(JSON.stringify(BreakPointService.normal));
BreakPointService.css_behaviour.next(JSON.stringify(BreakPointService.normal));
} else {
console.log(JSON.stringify(BreakPointService.breakpoint));
BreakPointService.css_behaviour.next(JSON.stringify(BreakPointService.breakpoint));
}
}
}
точка останова.сервис
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class BreakPointService {
static normal = {
background: 'w3-teal',
inputColor: 'w3-light-grey',
css_parent: 'w3-container w3-teal'
};
static breakpoint = {
background: 'w3-dark-blue',
inputColor: 'w3-white',
css_parent: 'w3-container w3-light-grey'
};
static css_behaviour = new BehaviorSubject<string>(JSON.stringify(BreakPointService.breakpoint));
static current_css = BreakPointService.css_behaviour.asObservable();
constructor() { }
}
соответствующий шаблон
<!--The content below is only a placeholder and can be replaced.-->
<div class="{{css_parent}}" style="text-align:center" style="height: 100%">
<app-tweet-list></app-tweet-list>
</div>