Данные не отображаются на дисплее component.html хотя он отображается на переменной this.reflistval
Я работаю над проектом angular 7 с asp.net ядро веб-API 2.1
отображение данных в переменных событий reference.component.ts ngoninit
this.RefListValно не показываться на публике Reference.component.html
моя функция веб-API
[HttpGet("{tableName}")] public List<object> GetColumnNames([FromRoute] string tablename) { var columnNames = new List<object>(); using (var command = _context.Database.GetDbConnection().CreateCommand()) { command.CommandText = $"SELECT row_number() over (order by code asc ) as rownum,code ,ArabicCaption, COLUMN_Name,TableName FROM INFORMATION_SCHEMA.COLUMNS left join ReferenceFiles on INFORMATION_SCHEMA.COLUMNS.COLUMN_Name=ReferenceFiles.FieldName and INFORMATION_SCHEMA.COLUMNS.TABLE_NAME=ReferenceFiles.TableName WHERE TableName = N'{tablename}' and TABLE_NAME= N'{tablename}'"; _context.Database.OpenConnection(); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { columnNames.Add((Int64)reader["rownum"]); columnNames.Add((Int32)reader["code"]); columnNames.Add((string)reader["ArabicCaption"]); columnNames.Add((string)reader["COLUMN_Name"]); columnNames.Add((string)reader["TableName"]); } } else { columnNames.Add("Not Found"); } } } return columnNames; }
результат выглядит следующим образом
[1,1,"كود الموظف","EmployeeId","Employees",2,2,"الفرع","BranchCode","Employees",3,3,"الاسم","EmployeeName","Employees"]
Как отобразить результат на экране reference.component.html угловой 7
Что я уже пробовал:
на сервисе api
referencelist:Reference[];
getReferenceDataForEmployee(tablename : string):Observable<Reference[]> { return this.http.get<Reference[]>('https://localhost:44326/api/Reference/'+ tablename); }
по ссылке.compoent.ts
RefListVal: any;
ngOnInit() { console.log('welcome'); this.apiservice.getReferenceDataForEmployee('Employees') .subscribe( data=>{ this.RefListVal = data; //data display here on reflistval but not show on component.html console.log(this.RefListVal); });
на reference.component.html
<tr *ngFor = "let ref of RefListVal "> <!-- <td> {{ref.rownum}}</td> --> <td> {{ref.code}} </td> <td> {{ref.tableName}} </td> <td> {{ref.fieldName}} </td> <td> {{ref.arabicCaption }} </td> <td> {{ref.latineCaption }} </td> </tr>
this.reflistval display on inspect browser as
0: 1 1: 1 2: "كود الموظف" 3: "EmployeeId" 4: "Employees" 5: 2 6: 2 7: "الفرع" 8: "BranchCode" 9: "Employees" 10: 3 11: 3 12: "الاسم" 13: "EmployeeName" 14: "Employees" length: 15 __proto__: Array(0)
Bryian Tan
похоже, что данные, возвращаемые API, представляют собой массив строк. нет никакого способа, чтобы TypeScript знал, какой код, tableName,... Я думаю, что код должен выплюнуть всю строку с этой одной строкой в коде.
<td> {{ref}} </td>
Richard Deeming
command.CommandText = $"... WHERE TableName = N'{tablename}' and TABLE_NAME= N'{tablename}'";
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк (или интерполяция строк) чтобы построить SQL-запрос. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]