Gibt es einen Angular 2-Dienst, der $ mdMedia ähnelt? Ich muss eine Schaltfläche basierend auf der Größe des Fensters anzeigen oder ausblenden (wenn das Fenster die gleiche Größe wie der Bildschirm hat, möchte ich es ausblenden)
0
A
Antwort
1
Vielleicht könnte dies Ihnen helfen.
resize.service.js
import {Injectable} from '@angular/core';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
@Injectable()
export class ResizeService {
public window = new BehaviorSubject(null);
constructor() {
window.onresize = (e) => {
this.window.next(e.target);
};
}
}
app.component.ts
import {Component} from '@angular/core';
import {ResizeService} from './resize/resize.service';
@Component({
moduleId: module.id,
selector: 'my-app',
templateUrl: 'app.component.html',
providers: [ResizeService]
})
export class AppComponent {
constructor(private resizeService: ResizeService) {
resizeService.window.subscribe((val) => {
if (val) {
console.log(val.innerWidth);
}
});
};
}
Der Dienst verwendet BehaviourSubject. See this answer für eine Beschreibung dessen, was es ist. Siehe auch https://xgrommx.github.io/rx-book/content/subjects/behavior_subject/index.html
Die Komponente abonniert das BehaviourSubject (Fenster) und erhält die aktualisierten Werte, wenn sich die Bildschirmgröße ändert.
1
Sie verwenden können und sollten verwenden Flex-Layout:
offiziellen https://github.com/angular/flex-layout/wiki/Adaptive-Layouts#core-directives--responsive-features
import {ObservableMedia} from '@angular/flex-layout';
@Component({
selector : 'my-mobile-component',
template : `
<div *ngIf="media.isActive('xs')">
This content is only shown on Mobile devices
</div>
<footer>
Current state: {{ }}
</footer>
`
})
export class MyMobileComponent {
public state = '';
constructor(public media:ObservableMedia) {
media.asObservable()
.subscribe((change:MediaChange) => {
this.state = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ""
});
}
}
Verwandte Themen
- 1. Angular Firefox (Neu | Klassenkonstruktoren muss aufgerufen werden)
- 2. Im eckigen Material 2 gibt es keinen Service! Was ist das Äquivalent für $ mdMedia
- 3. Angular Material MD-SideNav-Set md-is-open Wert basierend auf der Bildschirmgröße
- 4. Probleme einen Controller in Angular JS zu injizieren
- 5. Angular-UI vs Angular-Strap
- 6. Angular 2, ResolveGuard, Angular http,
- 7. Was ist @angular in Angular 2?
- 8. Angular-cli, PrimeNG und angular-cli
- 9. angular js unbekannter Providerfehler angular-animate
- 10. Angular 1 App in Angular 2
- 11. Wann @angular Tags in Angular 2 verwenden?
- 12. Angular JS | Angular Validation Match Password
- 13. Angular 2 Syntax Helfer für Angular 1.2
- 14. Angular 2 Material mit Angular CLI
- 15. Wie definiert man Angular-Direktive in Angular?
- 16. Angular 2 und Angular 4 Abhängigkeitsfehler
- 17. Angular 2 OpaqueToken vs Angular 4 InjectionToken
- 18. Angular Material, Liste in der Seitenleiste nicht scrollbaren
- 19. Angular ng-repeat wird nicht in der Ansicht
- 20. Angular Material MD-Inhalt verwendet eigene Y Bildlaufleiste
- 21. Angular Cookies
- 22. Angular Terminprobleme
- 23. Angular httpPromise
- 24. Angular - Wie
- 25. in Angular
- 26. Angular Authentication
- 27. Angular - RouteParams
- 28. Angular - Bootstrap
- 29. Angular + cdnify
- 30. Angular Dependencies