首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向component.ts调用component.html的插值值

向component.ts调用component.html的插值值
EN

Stack Overflow用户
提问于 2018-06-08 01:17:48
回答 1查看 233关注 0票数 1

我是Angular的新手,我有一个材料表,其中有如下字段:

<mat-header-cell *matHeaderCellDef mat-sort-header> Id </mat-header-cell>
<mat-cell *matCellDef="let user"> {{user.id}} 
</mat-cell>

<mat-cell *matCellDef="let user">
      <switch [status]="user.activo" [onText]="yes" [offText]="no" [onColor]="green" [offColor]="gray" [size]="normal" [disabled]="disabled" (statusChange)="onFlagChange($event)"></switch>
 </mat-cell>

如你所见,我这里有两个单元格。最后一个是使用事件的Bootstrap switch

(statusChange)="onFlagChange($event)

所以/i创建一个服务来更改当前用户的状态,如下所示:

postSwitch(body) {
var cambioEstatus = this.http
  .put(
    this.rootUrl + "api/usuarios/activar",
    JSON.stringify(body),
    this.options
  )
  .map((data: any) => data.json());
return cambioEstatus;
 }

我用来填充表的方法是:

 getUser(): Observable<User[]> {
    return this.httpClient.get<User[]>(this.serviceUrl, {
      headers: this.headersNew
    });
  }

然后在component.ts中,我只需调用方法:

onFlagChange(event) {
    const body: any = {
      usuarioId: ,
      activo: event
    };
    this.UsuariosService.postSwitch(body).subscribe(
      () => {
        //React to your HTTP request success
        this.toastr.success("Changed success");
      },
      err => {
        this.toastr.error("Error");
        //React to your HTTP request error
      }
    );
   }

如你所见,我有

const body: any = {
      usuarioId: ,
      activo: event
    };

但我不知道如何从视图中获取{{user.id}}。我怎样才能做到这一点呢?问候

完整的component.ts:

import {
  Component,
  Input,
  OnInit,
  ViewEncapsulation,
  ViewChild,
  ElementRef
} from "@angular/core";
import { ModalDismissReasons, NgbDateStruct } from "@ng-bootstrap/ng-bootstrap";
import { ScriptLoaderService } from "../../../../../_services/script-loader.service";
import { ToastrService } from "ngx-toastr";

import { UsuariosService } from "../../../../../_services/usuarios.service";
import { Observable } from "rxjs/Observable";
import {
  DataSource,
  CollectionViewer,
  SelectionModel
} from "@angular/cdk/collections";
// import { User } from "../../../../../_models/user.model";5
import { BehaviorSubject } from "rxjs";
import {
  MatSort,
  MatSortable,
  MatTableDataSource,
  MatPaginator,
  MatPaginatorIntl
} from "@angular/material";
import { UsuarioActivo } from "../../../../../_models/usuarioActivo";


@Component({
  selector: "usuarios",
  templateUrl: "./usuarios.component.html",
  encapsulation: ViewEncapsulation.None
})
export class UsuariosComponent {
  @ViewChild(MatSort) sort: MatSort;
  @ViewChild("filter") filter: ElementRef;
  @ViewChild(MatPaginator) paginator: MatPaginator;

  // Bootstrap switch
  public yes: string = "SI";
  public no: string = "NO";
  public green: string = "green";
  public gray: string = "gray";
  public disabled: boolean = false;
  public status: boolean = false;
  public normal: string = "small";
  //end Bootstrap switch

  selection = new SelectionModel<string>(true, []);
  dataSource;

  applyFilter(filterValue: string) {
    filterValue = filterValue.trim(); // Remove whitespace
    filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
    this.dataSource.filter = filterValue;
  }

  displayedColumns = [
    "id",
    "nombre",
    "apellido",
    "email",
    "perfil",
    "ultimoLogin",
    "activo",
    "action"
  ];

  constructor(
    private _script: ScriptLoaderService,
    private toastr: ToastrService,
    private UsuariosService: UsuariosService
  ) {}

  ngOnInit() {
    this.UsuariosService.getUser().subscribe(results => {
      if (!results) {
        return;
      }
      this.dataSource = new MatTableDataSource(results);
      this.dataSource.sort = this.sort;
      this.dataSource.paginator = this.paginator;

    });


  }

  onFlagChange(event, userid) {
    const body: any = {
      usuarioId: userid,
      activo: event
    };
    this.UsuariosService.postSwitch(body).subscribe(
      () => {
        //React to your HTTP request success
        this.toastr.success("Cambiado con éxito");
      },
      err => {
        this.toastr.error("Falló");
        //React to your HTTP request error
      }
    );
  }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 03:48:58

请记住,您的模板上下文中有user

<mat-cell *matCellDef="let user"> <switch [status]="user.activo" [onText]="yes" [offText]="no" [onColor]="green" [offColor]="gray" [size]="normal" [disabled]="disabled" (statusChange)="onFlagChange($event, user)"></switch> </mat-cell>

在这种情况下,您可以向onFlagChange()函数添加第二个参数并接收当前用户。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50746871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档