Angular 5 [hidden] 没有完全发挥作用
Angular 5 [hidden] not fully working
我正在根据可观察对象的布尔值测试 display/hide div 的选项。基于此 提供的第二个答案,我有以下代码收集文档正文宽度,返回值与 returns true:false 值的函数一起使用。
const checkScreenSize = () => document.body.clientWidth < 960;
const source$ =
fromEvent(window,'resize').pipe(throttleTime(500));
const screenSizeChanged$ = source$.pipe(map(checkScreenSize));
this.isScreenSmall$ = screenSizeChanged$.pipe(startWith(checkScreenSize()));
和模板:
<div "horizontal" [hidden]="isScreenSmall$ | async">
<glove-stepper-horizontal ></glove-stepper-horizontal>
{{isScreenSmall$ | async}}
</div>
<div id="vertical" [hidden]="!isScreenSmall$ | async">
<glove-stepper-vertical></glove-stepper-vertical>
{{isScreenSmall$ | async}}
</div>
如果条件为真(正文 < 值)并且垂直 div 是所有呈现的内容,则渲染有效,但是当条件为假时,两个 div 都会显示。
我知道 ngIf 是更好的推荐选项,但是 div 中包含在开始时创建的 svg 标签。如果检测到视图中的更改并且 Dom 中的 ngIf.removed 引用被销毁或从未创建,导致错误,基于当前值。
如果与 ngIf 合并,changeDetection 实现是否有效。我想一个函数可以重新初始化引用 svg 标签的变量。
感谢所有建议。
你的第二个条件不会那样工作,因为只要 isScreenSmall$
是可观察的,!isScreenSmall$
就会被解析为值为 false
的布尔值。
您必须将可观察值与异步管道操作放在括号中才能使其正常工作:
<div id="vertical" [hidden]="!(isScreenSmall$ | async)">
<glove-stepper-vertical></glove-stepper-vertical>
{{isScreenSmall$ | async}}
</div>
我正在根据可观察对象的布尔值测试 display/hide div 的选项。基于此
const checkScreenSize = () => document.body.clientWidth < 960;
const source$ =
fromEvent(window,'resize').pipe(throttleTime(500));
const screenSizeChanged$ = source$.pipe(map(checkScreenSize));
this.isScreenSmall$ = screenSizeChanged$.pipe(startWith(checkScreenSize()));
和模板:
<div "horizontal" [hidden]="isScreenSmall$ | async">
<glove-stepper-horizontal ></glove-stepper-horizontal>
{{isScreenSmall$ | async}}
</div>
<div id="vertical" [hidden]="!isScreenSmall$ | async">
<glove-stepper-vertical></glove-stepper-vertical>
{{isScreenSmall$ | async}}
</div>
如果条件为真(正文 < 值)并且垂直 div 是所有呈现的内容,则渲染有效,但是当条件为假时,两个 div 都会显示。
我知道 ngIf 是更好的推荐选项,但是 div 中包含在开始时创建的 svg 标签。如果检测到视图中的更改并且 Dom 中的 ngIf.removed 引用被销毁或从未创建,导致错误,基于当前值。
如果与 ngIf 合并,changeDetection 实现是否有效。我想一个函数可以重新初始化引用 svg 标签的变量。
感谢所有建议。
你的第二个条件不会那样工作,因为只要 isScreenSmall$
是可观察的,!isScreenSmall$
就会被解析为值为 false
的布尔值。
您必须将可观察值与异步管道操作放在括号中才能使其正常工作:
<div id="vertical" [hidden]="!(isScreenSmall$ | async)">
<glove-stepper-vertical></glove-stepper-vertical>
{{isScreenSmall$ | async}}
</div>