【问题标题】:Angular update bool value in a Service with a setfunction?具有setfunction的服务中的角度更新布尔值?
【发布时间】:2020-01-23 13:06:10
【问题描述】:

您好,我正在尝试通过我的组件单击按钮来更新我的服务中的布尔值。我很想调用 setfunction,然后将 bool 值更改为相反的值。所以从真到假,当它再次点击时从假到真。

服务

import { Injectable } from "@angular/core";

import { Melding } from "./melding";
import { Subject } from "rxjs";

@Injectable({
    providedIn: "root"
})
export class MeldingService {
    checkedChange: Subject<Boolean> = new Subject<Boolean>();
    private meldingen = new Array<Melding>(
        { id: 1, name: "Zinc verstopt Machine A", checked: false, roleId: 1 , beschrijving: "Ga de machine maken. dit is de beschrijving lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum "},
        { id: 2, name: "Storing Machine A", checked: false, roleId: 1 , beschrijving: "Ga de machine maken. dit is de beschrijving"},
        { id: 3, name: "Zinc verstopt Machine B", checked: false, roleId: 2 , beschrijving: "Ga de machine maken. dit is de beschrijving"},
        { id: 4, name: "Storing Machine B", checked: false, roleId: 2 , beschrijving: "Ga de machine maken. dit is de beschrijving"},
        { id: 5, name: "Defect Machine B", checked: false, roleId: 2 , beschrijving: "Ga de machine maken. dit is de beschrijving"},
        { id: 6, name: "Zinc verstopt Machine C", checked: false, roleId: 3 , beschrijving: "Ga de machine maken. dit is de beschrijving"},
        { id: 7, name: "Zinc verstopt Machine D", checked: false, roleId: 4 , beschrijving: "Ga de machine maken. dit is de beschrijving"},
        { id: 8, name: "Zinc verstopt Machine E", checked: false, roleId: 5 , beschrijving: "Ga de machine maken. dit is de beschrijving"},
        { id: 9, name: "Storing Machine E", checked: false, roleId: 6 , beschrijving: "Ga de machine maken. dit is de beschrijving"}
    );

    setChecked(id: number) {
        var melding = this.getMelding(id);
        console.log(!melding.checked);
        this.checkedChange.next(!melding.checked);

    }
}

组件

import { ActivatedRoute } from "@angular/router";

import {Melding} from "../melding/melding";
import {MeldingService} from "../melding/melding.service";

@Component({
  selector: 'ns-melding-detail',
  templateUrl: './melding-detail.component.html'
})
export class MeldingDetailComponent implements OnInit {
  melding: Melding;

  constructor(
    private meldingService: MeldingService, 
    private route: ActivatedRoute) { }

  ngOnInit(): void {
    const id = +this.route.snapshot.params.id;
    this.melding = this.meldingService.getMelding(id);
  }

  onButtonClick(id: number) { 
    this.meldingService.setChecked(id);
  } 
}```

【问题讨论】:

  • 您似乎没有在单击按钮时修改原始值 - var melding = this.getMelding(id); melding.checked = !melding.checked; this.checkedChange.next(melding.checked); 这样做会每次都切换值。

标签: angular typescript nativescript


【解决方案1】:

你的问题是什么? getMelding 是做什么的? 不要混合荷兰语和英语:)

在你的setChecked 方法中,你不应该写meldingen[id].checked = !meldingen[id].checked 吗?

【讨论】:

  • 每个“融合”上都有一个按钮,一旦我点击按钮,我就会尝试将选中的值更新为相反的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2013-12-26
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多