Сценарий:
Использование Nativescript 5.0 с Angular
- У меня есть данные, поступающие из API (Customers.component.ts)
- Отображение числа nИдентификаторы, которые я получаю из API.Отлично работает (customer.component.html)
- Пользователь нажимает на переключатели, чтобы сделать свой выбор, и, наконец, нажимает кнопку «Сохранить», которая вызывает функцию saveData ()
- В saveData () я не могупрочитайте, какие переключатели проверены.
Я попробовал ниже в customer.component.html, он прекрасно отрисовывается на основе данных, полученных от API.В этом нет ошибок.
<ListView [items]="_coursesmeta" [height] = "_coursesmeta.length == 0 ? 30 : _coursesmeta.length * 70" class="list-group">
<ng-template let-result="item">
<GridLayout rows="auto auto" columns="* *" class="m-5" verticalAlignment="stretch">
<Label class="h3 m-15" [text]="result.coursename" textWrap="true" row="0" col="0"></Label>
<Switch [id]="'switch[' + id + ']'" class="m-15" row="0" col="1" ></Switch>
</GridLayout>
</ng-template>
</ListView>
Это
[id] = "'switch [' + id + ']'" это нормально?Есть ли способ прочитать, если какой-либо из коммутаторов проверен.
Коммутаторы создаются динамически на основе данных API.
** Правка - добавление кода ниже **
<ListView [items]="_coursesmeta" [height] = "_coursesmeta.length == 0 ? 30 : _coursesmeta.length * 70" class="list-group">
<ng-template let-result="item">
<GridLayout rows="auto auto" columns="* *" class="m-5" verticalAlignment="stretch">
<Label class="h3 m-15" [text]="result.coursename" textWrap="true" row="0" col="0"></Label>
<Switch [checked]="result.selected" class="m-15" row="0" col="1" ></Switch> </GridLayout>
</ng-template>
</ListView>
и важной частью файла ts является
import { Component, OnInit } from "@angular/core";
import { RouterExtensions } from "nativescript-angular/router";
import { ActivatedRoute } from "@angular/router";
import { ObservableArray } from "data/observable-array";
import * as Permissions from "nativescript-permissions";
import { Coursemeta } from "../../shared/coursemeta.model";
import { CoursemetaService } from "~/app/shared/coursemeta.service";
var contacts = require( "nativescript-contacts" );
import { finalize } from 'rxjs/operators';
export class ContactManagerComponent implements OnInit {
public constructor(private router: RouterExtensions, private route: ActivatedRoute, private _coursemetaservice: CoursemetaService) { }
public _coursesmeta: ObservableArray<Coursemeta> = new ObservableArray<Coursemeta>([]);
ngOnInit(): void {
this.callerName=this.route.snapshot.params["callerName"];
this.callerNumber=this.route.snapshot.params["callerNumber"];
this.input="";
this._coursemetaservice.getCoursesmeta()
.pipe(finalize(() => this._isLoading = false))
.subscribe((coursesmeta: Array<Coursemeta>) => {
this._coursesmeta = new ObservableArray(coursesmeta);
this.courseCount=this._coursesmeta.length;
this._isLoading = false;
});
}
public ShowSelectedCourses()
{
for(var i=0; i < this._coursesmeta.length; i++)
{
if(this._coursesmeta.getItem(i).selected == false)
{
alert("false = " + i);
}
}
alert("Saved ....");
}
}
Я ожидаю, что если пользователь передвинет переключатель, то выбранное свойство должно изменить свое значение как часть observablearray.
Я могу видеть данные, как и ожидалось, нет ошибок в передаче данных API, отрисовка идеальна.