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

mapsuscirber,如何访问组件变量?

  •  0
  • cucuru  · 技术社区  · 7 年前

    我有一个表单,我用一个脚本控制更改:

    <form #f="ngForm">
    
      <mat-card-content>
    
        <mat-input-container>
          <input matInput [(ngModel)]="id" name="id" placeholder="id" (ngModelChange)="elementChanged$.next($event)"/>
          </mat-input-container>
       </mat-card-content>
    
    </form>
    export class myComponent implements OnInit {
    
     dataToGet: string;
     formChanged$: Observable<boolean>;
     elementChanged$: Subject<any> = new Subject<any>();
     elementSubscription: Subscription;
    
     constructor() {
    
       this.elementSubscription = this.elementChanged$  
         .debounceTime(500)
         .map(this.formHaveChanged)
         .subscribe(haveChanged => this.formChanged$ = haveChanged)
      }
    
      formHaveChanged(): Observable<boolean> {
        this.dataToGet -> fails because of this is mapSuscriber
        return Observable.of(true)
      }
    }
    

    所以我的问题很清楚,当我在formHaveChanged()函数“this”是MapsScriber而不是myComponent中时,我需要访问myComponent变量,但我无法获得它,我如何才能做到?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Łukasz Szcześniak    7 年前
    .map(this.formHaveChanged.bind(this))
    

    .map(() => this.formHaveChanged())
    

    this.formHaveChanged 是未绑定函数。在未绑定函数中,您无权访问此项。