代码之家  ›  专栏  ›  技术社区  ›  FakeLion

角翻盖绑定无法按预期工作

  •  0
  • FakeLion  · 技术社区  · 6 年前

    我正在尝试绑定Popover内容值。我用的是NG引导程序。

    收听文本的输入更改:

    <input (keyup)="onTextChange($event)" type="text" class="form-control" placeholder="Enter font family">
    

    我的弹出按钮:

    <button type="button" class="btn btn-secondary" placement="top"
        [ngbPopover]="text2" popoverTitle="Popover on top"> Popover on top </button>
    

    TS文件:

    import {Component} from '@angular/core';
    @Component({
      selector: 'ngbd-popover-basic',
      templateUrl: 'src/popover-basic.html'
    })
    export class NgbdPopoverBasic {
      text2: string = '';
    
      onTextChange(event: any) {
        this.text2 = event.target.value;
      }
    }
    

    它起作用,但不象预期的那样。当popoover处于活动状态时,popoover内容值不会更改,我必须关闭并重新打开它,以查看poover值是否已更改。

    以下是我要做的事情的示例: http://plnkr.co/edit/WS65zQNNvO99YwXmafFE?p=preview

    1 回复  |  直到 6 年前
        1
  •  0
  •   Antoine V    6 年前

    事实上, @ngbPopover 只有在 open 方法被调用。

    您可以这样修改代码。其思想是必须在设置值之前关闭Popover,然后重新打开。

    HTML

    <input (keyup)="onTextChange($event)" type="text" class="form-control" id="fontFamilyHeader" aria-describedby="fontFamilyHeader" placeholder="Enter font family">
    
    <button class="btn btn-primary" ngbPopover #a="ngbPopover">Click me </button>
    

    TS

    import {Component, ViewChild, Input} from '@angular/core';
    
    @Component({
      selector: 'ngbd-popover-triggers',
      templateUrl: 'src/popover-triggers.html'  
    })
    export class NgbdPopoverTriggers {
      @ViewChild('a') public a:NgbPopover;
    
      public onTextChange(event: any) {
    
    
        const isOpen = this.a.isOpen();
        if(isOpen)
        {
           this.a.close();
        }
        this.a.ngbPopover= event.target.value;
        this.a.open(event.target.value);
    
      }
    }