Я настраиваю функцию «upsert» выше, если вы хотите ВСТАВИТЬ И ЗАМЕНИТЬ:
`
CREATE OR REPLACE FUNCTION upsert(sql_insert text, sql_update text)
RETURNS void AS
$BODY$
BEGIN
-- first try to insert and after to update. Note : insert has pk and update not...
EXECUTE sql_insert;
RETURN;
EXCEPTION WHEN unique_violation THEN
EXECUTE sql_update;
IF FOUND THEN
RETURN;
END IF;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION upsert(text, text)
OWNER TO postgres;`
И после выполнения сделайте что-то вроде этого:
SELECT upsert($$INSERT INTO ...$$,$$UPDATE... $$)
Важно поместить двойную долларовую запятую, чтобы избежать ошибок компилятора
в component.html добавить следующий код:
<div *ngFor="let x of students;let i=index">
<div *ngFor="let j of studentDetails">
<input *ngIf="x.name == j.name" type="text" [name]="'name'+i"
[value]="j.marks">
</div>
</div>
Здесь вам нужно сопоставить имя учащегося с массивом studentDetails
объектов и return
сопоставить отметки ученика, как показано ниже.
Пример
component.ts
getStudentMarks(studentName) : number {
let marks = 0;
this.studentDetails.forEach(details => {
if (studentName == details.name) {
marks = details.marks;
}
})
return marks;
}
component.html
<div *ngFor="let x of students;let i=index">
{{x.name}}
<input type="text" [value]="getStudentMarks(x.name)" >
</div>
[ 119] Вот решение для стекаблиц