【问题标题】:Angular 2 show/ hide dynamically generated divsAngular 2 显示/隐藏动态生成的 div
【发布时间】:2018-01-05 20:01:03
【问题描述】:

根据我得到的响应,我将动态生成 div。例如,如果我的回答是

Array = {response: {  
                  " para1" : "para1name", 
                   " para2" : "para2name"
              }
}

<div *ngFor="let x of Array; > 
<button>x.para1</button>
<div > content for para1</div>
</div>

我必须将 json 中的所有属性存储到一个数组中并遍历它以显示 div。在这种情况下,我应该有 2 个 div 但它不起作用。而且当我点击 para1 的按钮时, para1 的 div 应该显示 n 当我点击 para2 div 我应该隐藏 para1 的 div 并且应该显示 para2 的 div 。如何做到这一点。

【问题讨论】:

  • 数组只有一个元素对象,有两个属性。
  • 你能帮我实现吗
  • 你能发布你期望的数组吗?是否相同(具有 para1 和 para2 两个属性的对象)?

标签: javascript angular ngfor


【解决方案1】:

请参考您要使用 json 对象的键进行迭代的解决方案 https://stackoverflow.com/a/37431657/2013245

@Pipe({name: 'keys'})
export class KeysPipe implements PipeTransform {
  transform(value, args:string[]) : any {
    if (!value) {
      return value;
    } 

    let keys = [];
    for (let key in value) {
      keys.push({key: key, value: value[key]});
    } 
    return keys;
  } 
} 

上述代码会将您的键和值推送到一个数组中,您可以在其中进行迭代。

然后在你的component.ts中,你可以做这样的事情

<div *ngFor="let x of Array;" >
 <div *ngFor="#temp of x | keys"> 
   <button>temp.para1</button>
   <div> content for para1</div>
 <div>
</div>

希望对您有所帮助。

【讨论】:

  • 非常感谢您的帮助.. 是否有任何帖子可以指导显示和隐藏 div.. 这是主要任务
  • 你试过 ngIf 了吗?
  • NgIf ??这有什么帮助
  • advancesharp.com/blog/1212/...。您能否检查该链接,看看这是否有助于动态显示和隐藏?你可以问任何问题。我刚试过。它有效
【解决方案2】:
show: boolean = false;

clicked() {

      console.log("clicked");
      this.show = !this.show;

}

你的 html 代码 -

input type="submit" value="Search" (click)="clicked()"

<div *ngIf="show">
your div content to be displayed dynamically
</div>

【讨论】:

  • 请注意您的格式并尽量使其更具描述性。
  • 我是这个网站的新手,遇到了一些困难..!!
  • 别担心,我们都是新手。请考虑浏览帮助和常见问题解答部分:stackoverflow.com/help
猜你喜欢
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
相关资源
最近更新 更多