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

角度2显示和隐藏元素

曹和正
2023-03-14

我有一个问题隐藏和显示一个元素取决于一个布尔变量在角2。

这是div要显示和隐藏的代码:

<div *ngIf="edited==true" class="alert alert-success alert-dismissible fade in" role="alert">
        <strong>List Saved!</strong> Your changes has been saved.
</div>

变量已“编辑”,并存储在我的组件中:

export class AppComponent implements OnInit{

  (...)
  public edited = false;
  (...)
  saveTodos(): void {
   //show box msg
   this.edited = true;
   //wait 3 Seconds and hide
   setTimeout(function() {
       this.edited = false;
       console.log(this.edited);
   }, 3000);
  }
}

元素是隐藏的,当saveTodos函数启动时,会显示元素,但3秒钟后,即使变量返回为false,元素也不会隐藏。为什么?

共有3个答案

东方涛
2023-03-14

如果不想删除HTMLDOM元素,请使用*ngIf。

否则,请使用以下命令:

<div [style.visibility]="(numberOfUnreadAlerts == 0) ? 'hidden' : 'visible' ">
   COUNTER: {{numberOfUnreadAlerts}} 
</div>
马飞
2023-03-14

您应该使用*ngIf指令

<div *ngIf="edited" class="alert alert-success box-msg" role="alert">
        <strong>List Saved!</strong> Your changes has been saved.
</div>


export class AppComponent implements OnInit{

  (...)
  public edited = false;
  (...)
  saveTodos(): void {
   //show box msg
   this.edited = true;
   //wait 3 Seconds and hide
   setTimeout(function() {
       this.edited = false;
       console.log(this.edited);
   }.bind(this), 3000);
  }
}

更新:当您在超时回调中时,您缺少对外部范围的引用。

所以添加. bind(this),就像我在上面添加的一样

问:编辑是一个全局变量。你在一个*ngFor循环中的方法是什么?-Blauhirn

答:我将编辑作为属性添加到我正在迭代的对象中。

<div *ngFor="let obj of listOfObjects" *ngIf="obj.edited" class="alert alert-success box-msg" role="alert">
        <strong>List Saved!</strong> Your changes has been saved.
</div>


export class AppComponent implements OnInit{
   
  public listOfObjects = [
    {
       name : 'obj - 1',
       edit : false
    },
    {
       name : 'obj - 2',
       edit : false
    },
    {
       name : 'obj - 2',
       edit : false
    } 
  ];
  saveTodos(): void {
   //show box msg
   this.edited = true;
   //wait 3 Seconds and hide
   setTimeout(function() {
       this.edited = false;
       console.log(this.edited);
   }.bind(this), 3000);
  }
}
屠浩
2023-03-14

根据您想要实现的目标,有两种选择:

>

<div [hidden]="!edited" class="alert alert-success box-msg" role="alert">
  <strong>List Saved!</strong> Your changes has been saved.
</div>

可以使用ngIf control指令添加或删除元素。这与hidden指令不同,因为它不显示/隐藏元素,而是从DOM中添加/删除元素。可以释放元素的未保存数据。对于已取消的编辑组件,它可能是更好的选择。

<div *ngIf="edited" class="alert alert-success box-msg" role="alert"> 
  <strong>List Saved!</strong> Your changes has been saved.
</div>

对于您来说,3秒后的更改问题可能是由于与setTimeout不兼容。您是否包含angular2多边形填充。你的页面中有js库吗?

 类似资料:
  • 我有两个按钮导航栏。 当单击div#toggle-menu时,它使div#sidebar-mobile-wrapper显示。 当我点击div#toggle-function时,它会显示div#right-content-mobile。 都奏效了。但现在我想,一次只能显示一个div。所以当我点击#toggle-menu时,如果div#right-content-mobile是可见的,它将被隐藏和si

  • 问题内容: 按下后如何隐藏“编辑”链接?当我按下编辑键时,是否还可以隐藏“ lorem ipsum”文本? 问题答案:

  • 本文向大家介绍jQuery控制元素隐藏和显示,包括了jQuery控制元素隐藏和显示的使用技巧和注意事项,需要的朋友参考一下 1、jQuery隐藏和显示效果 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: 2、jQuery淡入淡出效果 通过 jQuery,您可以实现元素的淡入淡出效果。 jQuery 拥有下面四种 fade 方法: fadeIn()

  • 我正在使用Ionic 3 Angular作为网站。并且有 2 个小点将整个视图从视图 1 更改为视图 2。基本上要做到这一点,我只是使用 *ngIf 进行离子行的显示隐藏,如下所示 但是整体过渡非常快。当我点击按钮从视图1转到视图2时,我想把它显示为滑动效果。请指教。 我认为ionic和angular都有某种动画功能,但我不确定在这种情况下哪个是正确的,以及如何使用它。

  • 本文向大家介绍如何使用animate(),隐藏和显示元素?,包括了如何使用animate(),隐藏和显示元素?的使用技巧和注意事项,需要的朋友参考一下 使用和方法来隐藏和显示元素。 示例 您可以尝试运行以下代码,以了解如何使用方法来隐藏和显示元素:

  • 我对使用Angular做事情还很陌生,所以我可能会忽略一些事情: 我正在用*ngfor生成多个div行。每一行都有一个切换按钮和一个隐藏的子DIV(子DIV也可以有隐藏的子DIV)。 我想尝试和做的是在点击切换按钮时独立地显示和隐藏子div(同时切换按钮图标也应该改变)。我设法使它工作,要么打开所有的div在同一时间,或当点击一行-切换,它将打开子div。 但当我点击另一个时,它会关闭之前点击的一