2017-01-09 3 views
1

У меня есть компонент с методом, который получает значения из формы. Я хотел бы описать данные формы с помощью интерфейса.Как объявить интерфейс над угловым компонентом?

Однако во время выполнения (ng serve) компилятор сообщает мне, что интерфейс неизвестен. (Public property 'friendshipFormModel' of exported class has or is using private name 'IFriendshipFormModel'.)

Как я могу правильно объявить интерфейсы? Если возможно, я бы избегал создавать отдельный файл только для этого интерфейса, так как он принадлежит компоненту.

Файл:

import { Component, OnInit, Output, EventEmitter } from '@angular/core'; 
import * as moment from 'moment'; 
import { FriendshipModel } from '../models/friendship.model'; 

interface IDatePickerDateModel { 
    day: string; 
    month: string; 
    year: string; 
    formatted: string; 
    momentObj: moment.Moment; 
} 

interface IFriendshipFormModel { 
    name: string; 
    meetingDate?: IDatePickerDateModel; 
} 

@Component({ 
    selector: 'app-create-friendship', 
    templateUrl: './create-friendship.component.html', 
    styleUrls: ['./create-friendship.component.css'] 
}) 

export class CreateFriendshipComponent { 
    @Output() friendshipCreated = new EventEmitter<FriendshipModel>(); 
    friendshipFormModel: IFriendshipFormModel; 

    constructor() { 
     this.friendshipFormModel = { 
      name: '', 
      meetingDate: null 
     }; 
    } 

    createFriendship() { 
     const friendshipCreation: FriendshipModel = this.frienshipFactory(this.friendshipFormModel); 
     this.friendshipCreated.emit(friendshipCreation); 
    } 
} 

Спасибо!

ответ

1

В этом случае, только экспортные интерфейсы, а

export interface IDatePickerDateModel { 
    day: string; 
    month: string; 
    year: string; 
    formatted: string; 
    momentObj: moment.Moment; 
} 

export interface IFriendshipFormModel { 
    name: string; 
    meetingDate?: IDatePickerDateModel; 
} 
+0

Wow чертовски просто, и я не думал об этом :(Спасибо вам @Radim это работает –

+0

Великий видеть, что сэр;) –

+0

я прочитал несколько примеры вроде этого http://blog.thoughtram.io/angular/2015/09/03/forward-references-in-angular-2.html, где «экспорт» не требуется. Вы знаете, зачем это нужно сейчас? –

Смежные вопросы