当前位置: 首页 > 知识库问答 >
问题:

为什么角度指令 *ngIF 不适用于动态值?

斜昊空
2023-03-14

我有一个带有一些块的组件,我只想在某个页面上显示以执行此操作,我正在使用角度指令 *ngIf,并订阅路由器更改我获取当前 url 的位置。我不明白为什么它不起作用。这是代码:

ts.file

我使用变量showSignUpBlock

 public showSignUpBlock = false;

  constructor(
    private userService: UserService,
    private router: Router,
    private localeService: LocaleService,
    private soliticsService: SoliticsService,
    private pushWooshService: PushWooshService,
    private loaderService: LoaderService,
    private gtmService: GtmService,
    private routingService: RoutingService
  ) {
    this.subscribeToIsLoadingUpdates();
  }

  ngOnDestroy(): void {}


  setShowBasicLayout(url: string): void {
    const pagesWithSignUpBlock = ['education/academy/login'];
    this.showSignUpBlock = pagesWithSignUpBlock.includes(url);
  }

  ngOnInit(): void {
    this.routingService
      .subscribeToRouterEvents()
      .subscribe((event: RouterEvent) => {
        const currentPath = event.url.substring(1);
        this.setShowBasicLayout(currentPath);
        console.log(this.showSignUpBlock);
      });
  }

html.file

阻止我需要显示或隐藏的内容,如果这个不起作用,则是这个*ngIF="Show SignUpBlock"


  <div class="login-form-signup" *ngIf="showSignUpBlock"> {{ 'login.sign-up' | translate:lang }}
    <span class="login-form-signup-link" (click)="navigateToRegistrationPage()">{{'login.click-here'| translate:lang}}!</span>
  </div>

如果有人能解释如何修理它,我将不胜感激。

共有1个答案

董权
2023-03-14

设置showSignUpBlock变量后,尝试使用ChangeDetectorRef#detectChanges。这会导致angular更新视图。

 类似资料:
  • 切换状态方法 但是,如果我删除*ngIf 将会工作。 理论上,ngIF检查它是否为真。该元素将在DOM上可用。根据我的理解,元素也应该具有非活动状态,因为它没有被触发。单击触发器后,元素将可用,并将具有活动状态。 但是为什么它没有任何动画呢? 有什么工作可以让我使用ngIf和动画吗?

  • 只是一个简单的问题。 让我们将这段代码作为IE: 是 NgIf 内的内容呈现然后从页面中隐藏,还是角度“知道”此 div 不会显示,因此甚至不渲染其中的内容?

  • 我开始使用动画js,我想在我的Angular应用程序中包含一个动画。 在尝试这样做时,我发现当放置动画的< code>div依赖于指令< code>ngIf时,动画不起作用。当ngIf中的条件为真时,图像正确加载,但它没有动画。删除指令解决了这个问题,但我想有条件地展示它。 JS: CSS: HTML工作正常: 超文本标记语言没有动画: HTML也不工作: 我应该做些什么来使动画符合Angular

  • 问题内容: 我有一个带有变量类型的指令myDirective。如果我运行,我希望指令使用templateUrl:x-template.html。如果我愿意,指令可以使用templateUrl:y-template.html。 这是我目前的指令。 我通过stackoverflow和angular文档阅读,但是没有找到我需要的任何东西。 我现在正在尝试按照以下方式进行操作: 但是不知道在哪里做。 你们

  • 问题内容: 在提交错误之前,我想请某人确认我最近遇到的奇怪行为。 考虑一下我们有一个简单的Dockerfile,我们试图将一些文件复制到非root用户的主目录中: 这就是我尝试构建此映像时得到的: 好像是空的。但为什么?将绝对路径放置到home目录而不是不是很方便。 问题答案: 这是您的问题: 使用指令时,它会影响用于在容器内启动新命令的用户标识。因此,例如,如果您这样做: 你得到这个: 因为这些