2016-09-08 7 views
5

próbuję wdrożyć angular2 formę bierną, ale pojawia się błąd czasu prowadzony podczas ładowania komponentuforma reaktywna kątowa2 Uncaught TypeError: nie można ustawić właściwości stos [object Object], który ma tylko funkcję pobierającą

Uncaught TypeError: Cannot set property stack of [object Object] which has only a getter

Ten błąd nie jest całkiem jasny, więc trudno mi się dowiedzieć, co się dzieje. Śledzę razem z angular university article. Pomyślałem, że może nastąpiły przełomowe zmiany, więc sprawdziłem dziennik zmian angular2, ale nie znalazłem nic związanego z moim problemem z formularzami reaktywnymi.

Każda pomoc zostanie doceniona tutaj. Mam zamiar dalej grzebać w poszukiwaniu rozwiązania.

addevent.component.ts

@Component({ 
    selector: 'addevent', 
    templateUrl: 'addevent.component.html', 
    styleUrls: ['addevent.scss'] 
}) 
export class AddEvent { 

    // vars 
    private _addEventForm:FormGroup; 
    private _eventTitle:FormControl; 
    private _eventDescription:FormControl; 

    constructor(private _addEventService:AddEventService, 
       private _formBuilder:FormBuilder) { 
    // init vars 
    this. _eventTitle = new FormControl('', Validators.required); 
    this._eventDescription = new FormControl('', Validators.required); 
    this._addEventForm = _formBuilder.group({ 
     'eventTitle': this._eventTitle, 
     'eventDescription': this._eventDescription 
    }); 
    } 

    private addEvent():void { 
    console.log(this._addEventForm); 
    //this._addEventService.addEvent(); 
    } 

} 

addevent.component.html

<div class="h3 content-title">Add Event</div> 

<form [formGroup]="_addEventForm" (ngSubmit)="addEvent()"> 
    <p> 
    <label>Title</label> 
    <input type="text" formControlName="eventTitle"> 
    </p> 
    <p> 
    <label>Description</label> 
    <input type="text" formControlName="eventDescription"> 
    </p> 
    <p> 
    <button type="submit" [disabled]="_addEventForm.invalid">Submit</button> 
    </p> 
</form> 

dashboard.module.ts

@NgModule({ 
    declarations: [Dashboard, Navbar, Sidebar, Home, Profile, Events, AddEvent], 
    imports: [BrowserModule, FormsModule, ReactiveFormsModule, HttpModule], 
    providers: [ContentSwap, SidebarActivity, AuthService, FirebaseAuthService] 
}) 
export class DashboardModule {} 
+0

Nie sądzę, że powinieneś importować zarówno ReactiveFormsModule, jak i FormsModule. Wypróbowałem twój kod jako wysłany i nie znalazłem błędu. Zobacz [ten plunker] (https://embed.plnkr.co/buK2gqHNYwlUnDVPuqTm/). Tak więc błąd wydaje się pochodzić z kodu, którego nie pokazywałeś. –

+0

Błąd jest rzeczywiście opisowy. Masz obiekt, który zna on tylko jako '[obiekt Object]' (pozwala wywołać to obj), próbujesz ustawić właściwość 'stack' (powiedzmy przez wywołanie' obj.stack = something', ale nie jesteś dozwolone, ponieważ własność 'stack' jest tylko do odczytu (ma getter, no setter) Problem polega na tym, że przypisanie może wystąpić gdziekolwiek (może nie twój kod, ale może spowodowane przez coś, co przekazujesz do kodu biblioteki), więc musisz spojrzeć na ślad stosu, aby zobaczyć, skąd pochodzi. –

+0

@StevenLuke oba moduły są wymagane, błąd wynika z posiadania dyrektyw w formie kątowej. – oxenfree

Odpowiedz

6

Czasem pojawia się ten sam błąd. Wygląda jak błąd w najnowszym zona/kątowym. Aby uzyskać prawdziwy błąd, umieść punkt przerwania na stosie, z którego ten błąd został zgłoszony. Twój prawdziwy błąd będzie argumentem wejściowym do funkcji, która się zawiesza.

Jeśli potrzebujesz więcej szczegółów https://github.com/angular/zone.js/issues/427

+0

To interesujące, będę musiał zagłębić się w to jeszcze bardziej. Dzięki, że powiedziałeś mi o punkcie przerwania, spróbuję tego. – oxenfree

+1

że wątek doprowadził mnie do sedna sprawy, brakowało mi dostawcy w moim module! – oxenfree

1

Po gwintem do emisji na kanciastych/zone.js, A comment wskazał mi w kierunku coraz w dół do rzeczywistego błędu.

uncaught TypeError: Cannot create property 'configurable' on string 'Error: No provider for AddEventService!

właśnie brakuje dostawcy dla nowej usługi stworzyłem.

Powiązane problemy