Angular Can';t绑定到';小写';因为它不是';t'的已知属性;离子输入';
我对《爱奥尼亚3》和《Angular》还相当陌生,我遇到了一些有点困惑的事情,因为看起来我做了所有正确的事情,但标题中出现了错误 我有一个指令试图应用于一个字段,该字段将强制输入小写:Angular Can';t绑定到';小写';因为它不是';t'的已知属性;离子输入';,angular,ionic-framework,ionic3,Angular,Ionic Framework,Ionic3,我对《爱奥尼亚3》和《Angular》还相当陌生,我遇到了一些有点困惑的事情,因为看起来我做了所有正确的事情,但标题中出现了错误 我有一个指令试图应用于一个字段,该字段将强制输入小写: import {Directive, Input, Output, EventEmitter, OnInit} from '@angular/core'; @Directive({ selector: '[lowercase]', host: { '[value]': 'lowe
import {Directive, Input, Output, EventEmitter, OnInit} from '@angular/core';
@Directive({
selector: '[lowercase]',
host: {
'[value]': 'lowercase',
'(input)': 'format($event.target.value)'
}
})
export class LowercaseDirective implements OnInit {
@Input() lowercase: string;
@Output() lowercaseChange: EventEmitter<string> = new EventEmitter<string>();
constructor() {
}
ngOnInit() {
this.lowercase = this.lowercase || '';
this.format(this.lowercase);
}
format(value) {
value = value.toLowerCase();
this.lowercaseChange.next(value);
}
}
但当我尝试将其添加到登录页面时,如下所示:
<ion-content padding class="master">
<div class="error-message" *ngIf="error !== ''">
{{error}}
</div>
<ion-list>
<form #loginForm="ngForm"
(ngSubmit)="userLogin(loginForm)">
<ion-item>
<ion-label for="name" stacked>username</ion-label>
<ion-input
required
ngModel
[(lowercase)]="login"
name="login"
type="text"
id="login"
#login="ngModel"></ion-input>
</ion-item>
<div class="warnings" *ngIf="login.touched && !login.valid">username is required!</div>
<ion-item>
<ion-label for="password" stacked>password</ion-label>
<ion-input
required
ngModel
#password="ngModel"
name="password"
type="password"
id="password" ></ion-input>
</ion-item>
<div class="warnings" *ngIf="password.touched && !password.valid">password is required!</div>
<button
class="button"
[disabled]="!loginForm.valid"
ion-button color="primary"
round
full
type="submit">Login</button>
</form>
</ion-list>
<a class="go-to-reset" (click)="goToResetPassword()">Whoops. I forgot my login...</a>
</ion-content>
import { AuthenticationProvider } from './../../providers/authentication/authentication';
import { Component, OnInit } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import 'rxjs/add/operator/do';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
error = '';
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private auth: AuthenticationProvider) {
}
ngOnInit(){
console.log('Member Info: ', this.auth.memberInfo());
}
...
我得到以下错误:
无法绑定到“小写”,因为它不是“离子输入”的已知属性。
我缺少什么?声明(组件、指令、管道)仅在导入它们的模块中可用。提供程序(服务)在全局应用程序中可用,多次导入服务将导致通过新实例重置服务
您可以在angular.io上找到以下内容的说明:
这是故意的。通过NgModule导入的可扩展性是一个主要问题
NGS模块系统的目标。将NgModule提供程序合并到
应用程序注入器使模块库可以轻松地丰富
使用新服务的整个应用程序。通过添加HttpClientModule
一次,每个应用程序组件都可以发出HTTP请求
为了更好地理解,.您是否在声明
LoginPage
的模块中导入了DirectivesModule
?我没有。我将其导入主应用程序模块,因此它应该是全局的。对不对?
import { AuthenticationProvider } from './../../providers/authentication/authentication';
import { Component, OnInit } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import 'rxjs/add/operator/do';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
error = '';
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private auth: AuthenticationProvider) {
}
ngOnInit(){
console.log('Member Info: ', this.auth.memberInfo());
}
...