Blazor 구성 요소에서 서비스를 호출할 수 없습니다.
P粉351138462
2023-08-31 12:01:02
<p>다음과 같은 서비스가 있습니다. </p>
<pre class="brush:php;toolbar:false;">네임스페이스 Hydra.Services
{
공개 수업 직원
{
공개 문자열 URL { 가져오기 }
공개 비동기 작업GetEmployee(){
// JSON 데이터를 반환합니다.
}
}
}</pre>
<p><code>Company</code> 구성 요소에서 이 서비스를 호출하고 싶습니다. </p>
<pre class="brush:php;toolbar:false;">@page "/"
<div> @company ... </div> <!-- 좋습니다. 회사 세부정보가 렌더링되었습니다 -->
<div> @Employee ... </div> <!-- System.NullReferenceException: '개체 참조가 개체의 인스턴스로 설정되지 않았습니다. ' -->
@코드 {
회사 문자열;
직원 문자열;
protected 재정의 비동기 작업 OnInitializedAsync()
(HttpClient 클라이언트 = 새로운 HttpClient()) 사용
{
// 회사 세부정보 가져오기
// 문제는 다음과 같습니다.
EmployeeModel emp = new Employee();
emp.url = "http://google.com";;
empoyee = emp.Employee()를 기다립니다.
}
}
}</pre>
<p>그래서 회사를 표시하는 논리에는 아무런 문제가 없지만 using() 내부에서 호출하는 Employee 서비스가 작동하지 않는 것 같습니다. 오류 외에는 어떤 문제가 있는지 모르겠습니다. </p>
<p>모델을 포함하거나 서비스를 주입하는 것을 잊어버리는 것은 문제가 되지 않습니다. </p>
<p>저는 초보자이기 때문에 질문이 상대적으로 간단합니다. </p>
다음 변수를 생성했습니다:
으아악하지만
@Employee
에 전화를 걸고 계시는데, 이는 null이 될 것입니다.직원에 실제로 넣은 변수로 전환해보세요:
으아악그리고 변수 철자를 잘못 입력하신 것 같아요. @employee를 의미할 수도 있습니다.
여기에 모든 내용을 입력하셨습니다:
으아악그러므로 제공하신 코드에서 @emloyee를 호출하는 것이 합리적입니다.
그럴 것이다
<div> @Employee ... </div>
改为<div> @emlpoyee ... </div>
귀하의 코드가 서비스 주입을 올바르게 수행하지 않습니다. 나는 내가 사용하고 올바르게 작동하는 방법을 여러분에게 제시합니다. 이 방법이 여러분에게 도움이 되기를 바랍니다.
먼저 서비스에 대한 인터페이스를 만들어야 합니다.
으아악그런 다음 위의 인터페이스를 상속받아 다음과 같이 서비스를 수정해야 합니다.
으아악이제 다음과 같이
으아악Startup.cs
或Program.cs
에 서비스를 주입해야 합니다.마지막으로 아래와 같이 필수 컴포넌트에 서비스를 주입하고 쉽게 사용해야 합니다.
으아악물론, 여러분의 코드에는 구조적인 문제가 많고, 단지 예제 코드의 형태로 문제를 명시하고 싶을 수도 있기 때문에 예제가 여러분에게 더 구체적으로 전달될 수 있도록 여러분의 코드를 사용하여 어떻게 작동하는지 설명하려고 노력했습니다. .