Angular Can';t绑定到';小写';因为它不是';t'的已知属性;离子输入';

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

我对《爱奥尼亚3》和《Angular》还相当陌生,我遇到了一些有点困惑的事情,因为看起来我做了所有正确的事情,但标题中出现了错误

我有一个指令试图应用于一个字段,该字段将强制输入小写:

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());
  }
...