标签: angular-ng-if

*ngIf和*ngFor在同一元素上导致错误

我在尝试使用Angular *ngFor*ngIf同一个元素时遇到了问题.

当尝试遍历集合中的集合时*ngFor,集合被视为null并因此在尝试访问模板中的属性时失败.

@Component({
  selector: 'shell',
  template: `
    <h3>Shell</h3><button (click)="toggle()">Toggle!</button>

    <div *ngIf="show" *ngFor="let thing of stuff">
      {{log(thing)}}
      <span>{{thing.name}}</span>
    </div>
  `
})

export class ShellComponent implements OnInit {

  public stuff:any[] = [];
  public show:boolean = false;

  constructor() {}

  ngOnInit() {
    this.stuff = [
      { name: 'abc', id: 1 },
      { name: 'huo', id: 2 },
      { name: 'bar', id: 3 },
      { name: 'foo', id: 4 },
      { name: 'thing', id: 5 },
      { …
Run Code Online (Sandbox Code Playgroud)

angular-ng-if ngfor angular

410
推荐指数
9
解决办法
22万
查看次数

带有多个参数的Angular ng-if =""

我正在尝试开始角度开发.在审阅文档后,一些问题仍然存在.我如何最好ng-if用多个参数写一个对应的

if( a && b) 要么 if( a || b )

javascript angularjs angular-ng-if

85
推荐指数
3
解决办法
16万
查看次数

*ng if if if in template

我如何在*ngIf声明中有多个案例?我习惯于Vue或Angular 1有一个if,else ifelse,但似乎Angular 4只有一个true(if)和false(else)条件.

根据文档,我只能这样做:

  <ng-container *ngIf="foo === 1; then first else second"></ng-container>
  <ng-template #first>First</ng-template>
  <ng-template #second>Second</ng-template>
  <ng-template #third>Third</ng-template>
Run Code Online (Sandbox Code Playgroud)

但我希望有多种条件(类似):

  <ng-container *ngIf="foo === 1; then first; foo === 2; then second else third"></ng-container>
  <ng-template #first>First</ng-template>
  <ng-template #second>Second</ng-template>
  <ng-template #third>Third</ng-template>
Run Code Online (Sandbox Code Playgroud)

但我最终不得不使用ngSwitch,感觉就像一个黑客:

  <ng-container [ngSwitch]="true">
    <div *ngSwitchCase="foo === 1">First</div>
    <div *ngSwitchCase="bar === 2">Second</div>
    <div *ngSwitchDefault>Third</div>
  </ng-container>
Run Code Online (Sandbox Code Playgroud)

或者,似乎很多Angular 1和Vue中习惯使用的语法在Angular 4中都不受支持,那么建议用这样的条件构造代码的方法是什么?

templates angular-ng-if angular

80
推荐指数
7
解决办法
9万
查看次数

角度ng-如果不是真的

为什么这不起作用.

<li ng-if="!area"></li>

从那时起感觉有点不合逻辑

<li ng-if="area"></li>

工作得很好.

'area'在范围内定义为true/false这是什么解决方法?我不想使用ng-show/ng-hide,因为它们都在DOM中呈现项目.

angularjs angular-ng-if

53
推荐指数
3
解决办法
11万
查看次数

AngularJS观看DOM变化

我有一个auto-carousel指令迭代链接元素的元素.

然而,子节点尚未加载到DOM中,因为它们ng-if的表达式尚未被解析.

如何确保父指令知道它的DOM树有变化?

        <ul class="unstyled" auto-carousel>
          <li class="slide" ng-if="name">{{name}}</li>
          ...
          <li class="slide" ng-if="email">{{email}}</li>
        </ul>
Run Code Online (Sandbox Code Playgroud)

我可以使用,$timeout但感觉不可靠.我也可以使用ng-show而不是ng-if但不回答问题,而不是我需要的问题.

dom angularjs angularjs-directive angular-ng-if

35
推荐指数
3
解决办法
6万
查看次数

如何有条件地围绕ng-content包装div

取决于(布尔)类变量的值,我希望我ng-content将其包装在div中或不包含在div中(即div甚至不应该在DOM中)...什么是最好的方法去对这个 ?我有一个尝试这样做的Plunker,在我认为是最明显的方式,使用ngIf ..但它不起作用...它只显示其中一个布尔值的内容,但不显示另一个

亲切的帮助谢谢!

http://plnkr.co/edit/omqLK0mKUIzqkkR3lQh8

@Component({
  selector: 'my-component',
  template: `

   <div *ngIf="insideRedDiv" style="display: inline; border: 1px red solid">
      <ng-content *ngIf="insideRedDiv"  ></ng-content> 
   </div>

   <ng-content *ngIf="!insideRedDiv"></ng-content>     

  `,
})
export class MyComponent {
  insideRedDiv: boolean = true;
}


@Component({
  template: `
    <my-component> ... "Here is the Content"  ... </my-component>
  `
})
export class App {}
Run Code Online (Sandbox Code Playgroud)

angular-ng-if angular2-ngcontent angular

35
推荐指数
2
解决办法
1万
查看次数

默认选中Angular 4默认单选按钮

我试图根据我从对象获得的值标记为默认的radiobutton,它可以是True或False.根据选项,我可以做什么来标记为默认的单选按钮?

<label>This rule is true if:</label>
<label class="form-check-inline">
    <input class="form-check-input" type="radio" name="mode" value="true" 
        [(ngModel)]="rule.mode"> all of the following conditions are true
</label>
<label class="form-check-inline">
    <input class="form-check-input" type="radio" name="mode" value="false"
        [(ngModel)]="rule.mode"> at least one of the following conditions is true
</label>
Run Code Online (Sandbox Code Playgroud)

我有真假rule.mode.

object radio-button angular-ng-if angular

29
推荐指数
2
解决办法
11万
查看次数

如何在ng-if和variable中使用过滤器?

在这个例子中,我使用了filter ng-repeat,但是如何在变量中使用它ng-if,例如:

{{languages.length | filter: {available: true}}}
Run Code Online (Sandbox Code Playgroud)

ng-if="languages.length == 0 | filter: {available: true}"
Run Code Online (Sandbox Code Playgroud)

小提琴.


HTML

<div ng-controller="mainController">
    <div>There are {{languages.length}} languages in total.</div>
    <div>??? There are {{languages.length}} languages available.</div>
    <div ng-if="languages.length == 0">??? Sorry, there are no languages available.</div>

    <ol>
        <li ng-repeat="language in languages | filter: {available: true}">{{language.name}}</li>
    </ol>
</div>
Run Code Online (Sandbox Code Playgroud)

AngularJS

$scope.languages = [
    {id:1, name:"German", available: false},    
    {id:2, name:"English", available: true},    
    {id:3, name:"French", available: false},  
    {id:4, name:"Italian", available: true},  
    {id:5, name:"Spanish", available: …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-filter angular-ng-if

26
推荐指数
2
解决办法
3万
查看次数

ng-if和*ng-if在angular2中有什么区别

我试图理解ng-if和*ng-if之间的区别,但它们看起来和我一样.

是否存在差异,我应该记住选择一个而不是何时使用这些指令?

javascript angular-ng-if angular

23
推荐指数
3
解决办法
1万
查看次数

AngularJS ng-if和范围

我试图了解ng-if和范围.据我所知,ng-if创建了一个新的子范围.这是我的问题:

视图

<input ng-model="someValue1" />
<div ng-if="!someCondition">
    <input ng-model="$parent.someValue2" />
</div>
Run Code Online (Sandbox Code Playgroud)

调节器

$scope.someCondition = true;

if ($scope.someCondition) {
    $scope.someValue2 = $scope.someValue1;        
}
Run Code Online (Sandbox Code Playgroud)

如果someCondition设置为true,则someValue2应与someValue1相同.

我的问题是我无法在两种情况下访问someValue2(true或false).我怎么能实现这个目标?

angularjs angular-ng-if

19
推荐指数
3
解决办法
3万
查看次数