Kur*_*bol 1 html size screen display angular
在更大的屏幕尺寸上,我有3列内容.在较小的屏幕尺寸上,我希望在带有3个选项卡的选项卡控件中显示内容.
我使用下面的html工作.问题是,如果我对组件绑定的数据进行更改,则不会更新组件的其他副本.因此,如果在屏幕较大时更改数据,则屏幕变小,它会正确切换到标签,但数据不会显示为更新.代码中的实际数据对象更新得很好.
如何同步复制的组件以始终显示相同的组件?基本上,当一个人改变时,另一个人会模仿这些改变.或者,当屏幕较小时,是否有不同/更好的方法来实现在标签中显示内容的相同目标.
<div fxHide fxShow.gt-sm >
<div>
<h3>Column 1</h3>
<custom-component1
[(data)]="data1">
</custom-component1>
</div>
<div>
<h3>Column 2</h3>
<custom-component2
[(data)]="data2">
</custom-component2>
</div>
<div>
<h3>Column 3</h3>
<custom-component3
[(data)]="data3">
</custom-component3>
</div>
<mat-tab-group fxShow fxHide.gt-sm>
<mat-tab label="Column 1">
<div>
<h3>Column 1</h3>
<custom-component1
[(data)]="data1">
</custom-component1>
</div>
</mat-tab>
<mat-tab label="Column 2">
<div>
<h3>Column 2</h3>
<custom-component2
[(data)]="data2">
</custom-component2>
</div>
</mat-tab>
<mat-tab label="Column 3">
<div>
<h3>Column 3</h3>
<custom-component3
[(data)]="data3">
</custom-component3>
</div>
</mat-tab>
</mat-tab-group>
</div>Run Code Online (Sandbox Code Playgroud)
您必须使用客户端窗口大小的observable!
这是怎么做的!或者你可以开始使用flex-layout for angular,我发现这个库非常有用.
编辑:
以下是让数据观察屏幕宽度大小的代码:
您-component.component.ts
import { Component, AfterViewInit } from '@angular/core';
import { ObservableMedia, MediaChange } from '@angular/flex-layout';
import { Subscription } from 'rxjs/Rx';
@Component({
selector: 'app-your-component',
templateUrl: './your-component.component.html',
styleUrls: ['./your-component.component.css']
})
export class YourComponentComponent implements AfterViewInit {
// Subscription of the observer of the screen size
mediaQuery$: Subscription;
// The active media query (xs | sm | md | lg | xl)
activeMediaQuery: string;
constructor(
private observableMedia: ObservableMedia
){}
ngAfterViewInit () {
this.mediaQuery$ = this.observableMedia.subscribe( (change: MediaChange) => {
this.activeMediaQuery = `${change.mqAlias}`;
if (this.activeMediaQuery === 'xs' || this.activeMediaQuery === 'sm') {
// Here goes code for update data in xs or sm (small screen)
} else {
// Here goes code for update data in gt-sm (bigger screen)
}
});
}
}
Run Code Online (Sandbox Code Playgroud)