我正在尝试编写一个Angular Directive,以防止在某些条件下(如果已渲染服务器端)渲染内容(例如ngIf = false)。
我查看了ngIf指令的工作原理,并推论出viewContainer.clear
方法正是我想要的。
问题是,即使我打viewContainer.clear()
,内容仍然会显示,我会丢失什么?
<ng-container ssr-skip>
<li *ngIf="!(logged$ | async)">
<a routerLink="/login">Login</a>
</li>
</ng-container>
import { Directive, Inject, ViewContainerRef } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { PLATFORM_ID } from '@angular/core';
@Directive({ selector: '[ssr-skip]' })
export class SkipSSRDirective {
constructor(@Inject(PLATFORM_ID) platform, viewContainer: ViewContainerRef) {
if (isPlatformBrowser(platform)) {
// return;
}
viewContainer.clear();
}
}