Angular .net Core: http get не нажимает метод контроллераC#

Место общения программистов C#
Ответить
Anonymous
 Angular .net Core: http get не нажимает метод контроллера

Сообщение Anonymous »

Я работаю над угловым приложением, которое использует задний конец ядра .NET с EF для изучения угловой. Решение было сгенерировано путем выбора шаблона основного проекта Angular и ASP.NET в Visual Studio 2022. Мои контроллеры были составлены под строительством, выбрав контроллер API опции с использованием структуры Entity. < /P>
Две модели. Сотрудник и зарплата. У каждого есть контроллер. А именно сотрудники Контроллер и зарплата. Есть сервисный класс, который обращается к контроллерам. Когда пользователь нажимает кнопку на первой странице, страница сотрудников загружается. Это работает правильно. Пользователь может нажать на ссылку рядом с каждым сотрудником, чтобы просмотреть их зарплату. Страница кода для зарплаты идентична коду со страницей сотрудников. Но когда я нажимаю на ссылку, страница загружается без каких -либо данных. Когда я отлаживаю метод действия на контроллере, не попадает.namespace EmployeesAngular.Server.Controllers
{
[Route("[controller]")]
[ApiController]
public class EmployeesController : ControllerBase
{
private readonly EmployeesAngularServerContext _context;

public EmployeesController(EmployeesAngularServerContext context)
{
_context = context;
}

[HttpGet]
public async Task GetEmployee()
{
return await _context.Employee.ToListAsync();
}
}
}
< /code>
Это контроллер заработной платы < /p>
namespace EmployeesAngular.Server.Controllers
{
[Route("[controller]")]
[ApiController]
public class SalariesController : ControllerBase
{
private readonly EmployeesAngularServerContext _context;

public SalariesController(EmployeesAngularServerContext context)
{
_context = context;
}

[HttpGet]
public async Task GetSalary()
{
return await _context.Salary.ToListAsync();
}
}
}
< /code>
Это файл app.component.html. < /p>

Employee Details
  • Employees


< /code>
Вот файл сотрудников.


First Name
Last Name
Department
Date Of Joining
Total Salary




{{dataItem.firstName}}
{{dataItem.lastName}}
{{dataItem.department}}
{{dataItem.joinDate}}
{{dataItem.totalSalary}}
View Salary Components
Edit



< /code>
Это код для файла заработной платы.


Basic
Allowance
Bonus




{{dataItem.basic}}
{{dataItem.allowance}}
{{dataItem.bonus}}



< /code>
Вот файл сотрудников.import { Component, OnInit } from '@angular/core';
import { ApiserviceService } from '../apiservice.service';

@Component({
selector: 'app-employees',
templateUrl: './employees.component.html',
styleUrls: ['./employees.component.css']
})
export class EmployeesComponent implements OnInit {

constructor(private service: ApiserviceService) { }

EmployeeList: any = [];

ngOnInit(): void {
this.refreshEmpList();
}

refreshEmpList() {
this.service.getEmployeeList().subscribe(data => {
this.EmployeeList = data;
});
}
}
< /code>
Вот зарплата.import { Component, OnInit } from '@angular/core';
import { ApiserviceService } from '../apiservice.service';
import { ActivatedRoute } from '@angular/router';
import { HttpClient } from '@angular/common/http';

@Component({
selector: 'app-salaries',
templateUrl: './salaries.component.html',
styleUrl: './salaries.component.css'
})
export class SalariesComponent implements OnInit {
constructor(private service: ApiserviceService) {
}

SalaryList: any = [];

ngOnInit(): void {
this.refreshSalary();
}

refreshSalary() {
this.service.getSalaryList().subscribe(data => {
this.SalaryList = data;
});
}
}
< /code>
Это моя служба, называемая Apiservice. < /p>
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
providedIn: 'root'
})

export class ApiserviceService {
constructor(private http: HttpClient) { }

getEmployeeList(): Observable {
return this.http.get('employees');
}

getSalaryList(): Observable {
return this.http.get('salaries');
}
}
< /code>
Так маршрутизация выполняется в файле app-routing-module.ts. < /p>
const routes: Routes = [
{ path: 'employees', component: EmployeesComponent },
{ path: 'salaries', component: SalariesComponent },
{ path: 'editEmployee', component: EditEmployeeComponent },
];
< /code>
Когда я нажимаю на ссылку на заработную плату и наблюдаю за консолью в инструментах разработчика в браузере, я вижу ошибку, в которой говорится < /p>

Синтаксисратор: неожиданный токен
< /blockquote>

getSalaryList(): Observable {
return this.http.get('salaries', { responseType: 'text' });
}
< /code>
Это дает мне ошибку компилятора, говоря, что < /p>

type 'isbodatable' не назначает типа 'usebreable ' < /p>
< /blockquote>
. Вызовите < /p>
< /blockquote>
Как было предложено на этой странице, я попытался изменить базовую href на странице index.html, как это, но это тоже не сработало. < /p>


to


< /code>
На основе другого ответа я изменил код в классе службы, как это. < /p>
getSalaryList(): Observable {
const httpOptions: Object = {
headers: new HttpHeaders({
'Accept': 'text/html',
'Content-Type': 'text/plain; charset=utf-8'
}),
responseType: 'text'
};

return this.http.get('salaries', httpOptions);
}
< /code>
Это также не нажимает на метод действия контроллера. И дает мне ошибку в консоли браузера, в которой говорится < /p>

ng0900: ошибка, пытаясь различить ... только массивы и итерации допускаются. Но ответы кажется неполными. Большинство вопросов не имеют выбранного ответа, и предложения по ответам, кажется, не работают для этой проблемы. Итак, я публикую этот вопрос.>

Подробнее здесь: https://stackoverflow.com/questions/779 ... ler-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»