2017-12-06 11 views
1

私は<input type="date">を持っています。サイトにアクセスすると、入力フィールドはすでに実際の日付になります。 だから私はngOnInit()が私が必要とするべきであると思う。しかし、ユーザーがルートに入ったときに、入力フィールドの値として実際の日付を入力するにはどうすればよいですか?角度5のngoninitでフロントエンドの日付値を設定する方法

私は既にウェブを検索してこれを実現しようとしましたが、angularjsと比較できない角度5を使用していますが、angularjsの古い解決法を見つけました。私が見つけた投稿は、もはや存在していない範囲を指していました。

ngOnInitのドキュメントも私を助けていません:/

HTML

<div class="form-group"> 
    <label>Eingangsdatum</label> 
    <input type="date" [(ngModel)]="dateArrival" id="dateArrivalPicker" value="" name="dateArrival" class="form-control"> 
</div> 

Compontent

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

    type: String; 
    serial: String; 
    layout: String; 
    dateArrival: Date; 
    activated: Boolean; 
    setup: String; 
    firmware: String; 
    installedAt: String; 
    createdBy: String; 
    createdDate: Date; 
    lastModified: Date; 
    lastModifiedBy: String; 
    notes: String; 
    macAddress: String; 


    constructor(
    private validateService: ValidateService, 
    private flashMessage: FlashMessagesService, 
    private authService: AuthService, 
    private router: Router 
) { } 

    ngOnInit() {} 

} 

私はbriosのように行うとhejeは彼のコメントでそれが動作すると書いたが、彼の答えはそうではない。そして、もう一つがある...彼のコメントを使って、私は私のコンソール内の二つの大きなエラーを取得:

Error: If ngModel is used within a form tag, either the name attribute must be set or the form 
     control must be defined as 'standalone' in ngModelOptions. 

     Example 1: <input [(ngModel)]="person.firstName" name="first"> 
     Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}"> 

私は今acutal日付で、このフィールドを埋めるの関数である私の<input type="date" [ngModel]="todaysDate | date:'dd-MM-yyyy'" (ngModelChange)="todaysDate = $event" [value]="todaysDate | date:'yyyy-MM-dd'"> に名前を与えた場合そこにはTT.MM.YYYYだけが立っています。私に何ができる?

+1

を介して日付を直接表示します。コントローラ(コンポーネント)とhtmlをポストするのは心配ですか?とにかく '@ ViewChild'を使用することもできます。そうしないと、ngmodelはngOnInit(またはさらに良い場合はngOnChange)と組み合わされたトリックを行います – briosheje

+1

htmlとコンポーネントをありがとう。私が持っている唯一の質問は、希望の日付が来る場所です。それが今日の場合は、ngOnInit: 'this.dateArrival = new Date()'を追加するだけです。また、次の例に沿ってngModelアプローチを変更します。https://plnkr.co/edit/s5OMg2olU2yHI246nJOG?p=preview。これにより、日付解析自体も処理されます。 – briosheje

+0

あなたはあなたのコメントを回答として投稿できますか?それは、私のために恥ずかしがり屋のように働いた、ありがとう! :) – Sithys

答えて

2

追加するのに十分でなければなりません:

ngOnInit() { 
    this.dateArrival = new Date(); 
} 

とこのプランナーで提案されているように、文字列の日付と文字列の日付を独自に処理するようにHTMLを変更します(アノトER SOポスト):plnkr.co/edit/s5OMg2olU2yHI246nJOG?p=preview

<input type="date" [ngModel] ="dateArrival | date:'yyyy-MM-dd'" (ngModelChange)="dateArrival = $event"> 

ngModelChangeが自動的に変更をトリガーすると、日付convertionのaswellを処理します。 NgModelは、代わりにdate pipe

1

あなたのようなあなたのcomponent.tsで変数を作成することができます:あなたのテンプレートに続いて

todaysDate: Date = new Date(); 

を:

<input type="text" [value]="todaysDate"> 
関連する問題