Angular 7.を使用しています。このコマンドを実行しますng build --prod
保護のために構築します。
そのとき私はこのエラーをキャッシュしています(プロパティ「サービス」はプライベートであり、クラス「LoginComponent」内でのみアクセスできます):
ERROR in src\app\login\login.component.html(5,33): : Property 'service' is private and only accessible within class 'LoginComponent'.
src\app\login\login.component.html(18,104): : Property 'service' is private and only accessible within class 'LoginComponent'.
私ですHTML Code:
<div id="login_section" class="d-flex justify-content-center align-items-center">
<div class="login_cnt col-8 row">
<div class="col-6 d-flex justify-content-center py-4">
<form class="col-8" [formGroup]="service.loginform">
<h2 class="text-center">User Login</h2>
<mat-form-field class="col-12">
<input matInput type="text" placeholder="Username" formControlName="username" >
<mat-error>Username is Required</mat-error>
</mat-form-field>
<mat-form-field class="col-12">
<input matInput [type]="hide ? 'password' : 'text'" formControlName="password" placeholder="Password">
<mat-icon matSuffix (click)="hide = !hide">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
<mat-error>Password is Required</mat-error>
</mat-form-field>
<a href="#" class="float-left lnk_forgot h7">Forgot Password</a>
<button mat-raised-button color="primary" class="float-right" [routerLink]="['/home']" [disabled]="service.loginform.invalid">Login</button>
</form>
</div>
</div>
</div>
それは私のですTSファイル:
import { Component, OnInit } from '@angular/core';
import { LoginService } from '../shared/login.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
username : string;
password: string;
hide = true;
constructor(private service: LoginService) { }
ngOnInit() {
}
}
ng serveを実行するとき、それをキャッチしません。
アクセス指定子を公開してアクセス可能にする必要があります
constructor(public service: LoginService) { }
Ahead-of-Timeコンパイル(ビルド中)を使用しており、テンプレートのコンポーネントのprivateメンバー(service
)にアクセスしようとしているようです[disabled]="service.loginform.invalid"
、service.loginform
。ただし、テンプレートおよびahead-of-time compilation
で使用する場合はpublicである必要があります。
constructor(private service: LoginService) { }
でなければなりません:
// your component: change private service to public service
constructor(public service: LoginService) { }
// then you can use it like this in the template of your component:
[formGroup]="service.loginform"
[disabled]="service.loginform.invalid"
サービスをプライベートにする必要があり、コンポーネントのテンプレートでそのメンバーの一部を使用する必要がある場合は、get
または他のメソッド(パブリック)を使用して、そのメンバーを返します。
// your component
constructor(private service: LoginService) { }
get loginForm() {
return this.service.loginform;
}
get loginIsInvalid(): boolean {
return this.service.loginform.invalid;
}
// then in the template of your component you can use:
[formGroup]="loginform"
[disabled]="loginIsInvalid"