防止任何渲染的角度指令

时间:2020-11-07 13:37:47

标签: angular server-side-rendering

我正在尝试编写一个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();
  }
}

0 个答案:

没有答案