Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

meu component html não é carregado

Olá. no meu projeto já criei vários componentes, mas justo esse está dando problema.

erro no console do browser:

Unhandled Promise rejection: "Failed to load http://localhost:8080/app/product/productform.component.html" ; Zone: <root> ; Task: Promise.then ; Value: "Failed to load http://localhost:8080/app/product/productform.component.html" undefined  zone.js:516:13
Object { __zone_symbol__error: Error, fileName: Getter, lineNumber: Getter, columnNumber: Getter, message: Getter, name: Getter, stack: Getter, originalStack: Getter, zoneAwareStack: Getter, toString: createMethodProperty/props[key].value(), 5 more… }  zone.js:518:9

tenho varios diretorios: home, product,upload etc.. o diretorio do que ta dando problema se chama "form" que é o formulario de cadastro que estou fazendo

form.component.ts

/**
 * Created by guguh on 31/03/2017.
 */
/**
 * Created by guguh on 25/03/2017.
 */
import {Component} from '@angular/core';
import {Http, Headers} from '@angular/http';
import {Validators, FormBuilder, FormGroup} from '@angular/forms';
import {ProductComponent} from "../product/product.component";

@Component({
  moduleId: module.id,
  selector: 'form',
  templateUrl: './form.component.html'
})


export class FormComponent {

  http: Http;
  myForm: FormGroup;
  product: ProductComponent = new ProductComponent();

  constructor(http: Http, fb: FormBuilder) {

    this.http = http;
    this.myForm = fb.group({
      descricao: ['', Validators.compose([Validators.required])]

    });

  }

  saveProduct(event: any) {
    event.preventDefault();
    let headers = new Headers();
    headers.append('Content-Type', 'application/json');

    this.http
      .post('salvar', JSON.stringify(this.product), {headers: headers})
      .subscribe(() => {
        console.log('Produto Salvo Com Sucesso!');
        this.product = new ProductComponent();
      }, error => console.log(error))
  }

}

form.component.html

<h1 class="text-center">Cadastro de Fotos</h1>
<div class="container">
  <form [formGroup]="meuForm" class="row" (submit)="saveProduct($event)">
    <div class="form-group">
      <label>Descrição</label>
      <input
        formControlName="descricao"
        name="descricao"
        [(ngModel)]="product.descricao"
        class="form-control"
        autocomplete="off">
      <span *ngIf="meuForm.controls.descricao.errors.required" class="form-control alert-danger"><!--se estiver vazio vai mostrar o span -->
                        Descrição obrigatória
      </span>
    </div>
    <div class="form-group">
      <label>Preço</label>
      <input
        formControlName="valor"
        name="valor"
        [(ngModel)]="product.valor"
        class="form-control"
        autocomplete="off">
      <span *ngIf="meuForm.controls.descricao.errors.required" class="form-control alert-danger"><!--se estiver vazio vai mostrar o span -->
                        Preço obrigatório
      </span>

    </div>
    <div class="form-group">
      <label>Código de Barras</label>
      <input
        formControlName="codigoBarra"
        name="codigoBarra"
        [(ngModel)]="product.codigoBarra"
        class="form-control"
        autocomplete="off">
      <span *ngIf="meuForm.controls.codigoBarra.errors.required" class="form-control alert-danger"><!--se estiver vazio vai mostrar o span -->
                        Código de barras obrigatório
      </span>

    </div>


    <button [disabled]="meuForm.invalid" type="submit" class="btn btn-primary">
      Salvar
    </button>
    <a [routerLink]="['']" class="btn btn-primary">Voltar</a>
    <hr>
  </form>
</div>

app.module.ts:

import 'rxjs/add/operator/map';

import {NgModule}      from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {AppComponent}  from './app.component';
import {routing} from './app.routes';
import {HomeComponent} from './home/home.component';
import {ProductManagerComponent} from './productManager/product-manager.component';
import {HttpModule} from '@angular/http';
import {UploadModule} from './upload/upload.module';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {ProductComponent} from "./product/product.component";
import {FormComponent} from './form/form.component';


@NgModule({
  imports: [BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    routing,
    HttpModule,
    UploadModule
  ],

  declarations: [AppComponent,
    HomeComponent,
    ProductManagerComponent,
    ProductComponent,
    FormComponent
  ],

  bootstrap: [AppComponent]
})
export class AppModule {

}

ja tentei de tudo e até agora n consigo ver o erro.....

7 respostas

Essa mensagem de erro não ajudou muito. Tem ela mais completa?

Bem, o caminho no qual você gravou o template, esta fisicamente no local esperado?

eu abri os erros e aparecem somente isso:

Unhandled Promise rejection: "Failed to load http://localhost:8080/app/product/productform.component.html" ; Zone: <root> ; Task: Promise.then ; Value: "Failed to load http://localhost:8080/app/product/productform.component.html" undefined  zone.js:516:13
    consoleError http://localhost:8080/node_modules/zone.js/dist/zone.js:516:13
    drainMicroTaskQueue/_loop_1 http://localhost:8080/node_modules/zone.js/dist/zone.js:545:25
    drainMicroTaskQueue http://localhost:8080/node_modules/zone.js/dist/zone.js:549:21
    ZoneTask/this.invoke http://localhost:8080/node_modules/zone.js/dist/zone.js:420:25
Object { __zone_symbol__error: Error, fileName: Getter, lineNumber: Getter, columnNumber: Getter, message: Getter, name: Getter, stack: Getter, originalStack: Getter, zoneAwareStack: Getter, toString: createMethodProperty/props[key].value(), 5 more… }  zone.js:518:9
    consoleError http://localhost:8080/node_modules/zone.js/dist/zone.js:518:9
    drainMicroTaskQueue/_loop_1 http://localhost:8080/node_modules/zone.js/dist/zone.js:545:25
    drainMicroTaskQueue http://localhost:8080/node_modules/zone.js/dist/zone.js:549:21
    ZoneTask/this.invoke http://localhost:8080/node_modules/zone.js/dist/zone.js:420:25

e sim, fisicamente está no local esperado... dentro da pasta app > form > form.component.html

Cruzes! Essa mensagem não ajudou nada! :) As mensagem de erro ainda deixam a desejar neste framework tão novinho.

Não sei qual é o problema, nesse caso, tão enigmático, você terá que ir removendo partes do seu formulário uma a uma e testando até achar se é algum problema no template. Se não for, verificar se as consultas no banco, as que são feitas quando carregas se estão tratando de possíveis erros.

Qual versão do Angular você esta usando?

Concordo... tenho vontade de voltar pro angular 1 pq o 2 ta mt novo ainda, deixando a desejar em alguns aspectos na minha opinião. eu estou usando a versão 2.4.0... eu arrumei uma parte do erro, mas agora só aparece isso pra mim, e não faço minima ideia do que seja :(

Object { __zone_symbol__error: Error, fileName: Getter, lineNumber: Getter, columnNumber: Getter, message: Getter, name: Getter, stack: Getter, originalStack: Getter, zoneAwareStack: Getter, toString: createMethodProperty/props[key].value(), 4 more… }  localhost:8080:25:57
    <anonymous> http://localhost:8080/:25:57
    ZoneDelegate.prototype.invoke http://localhost:8080/node_modules/zone.js/dist/zone.js:334:17
    Zone.prototype.run http://localhost:8080/node_modules/zone.js/dist/zone.js:126:24
    scheduleResolveOrReject/< http://localhost:8080/node_modules/zone.js/dist/zone.js:713:52
    ZoneDelegate.prototype.invokeTask http://localhost:8080/node_modules/zone.js/dist/zone.js:367:17
    Zone.prototype.runTask http://localhost:8080/node_modules/zone.js/dist/zone.js:166:28
    drainMicroTaskQueue http://localhost:8080/node_modules/zone.js/dist/zone.js:546:25
    ZoneTask/this.invoke http://localhost:8080/node_modules/zone.js/dist/zone.js:424:25
solução!

A menagem ainda não ajuda. Bom, das dicas que eu passei, uma que você pode fazer é migrar para a versão 4 para ver se nela eles melhoraram as mensagens de erro.

Eu sei que o Zone é o cara responsável em atualizar a sua view com base na mudança dos dados. Talvez haja alguma property associada com ngModel que não comporta essa associação ou é um array ao invés de um valor.

achei o erro. eu estava tentando usar um modelo de produto pra ser o tipo do meu objeto. apos usar um objeto nativo mesmo e excluir o modelo de produto deu tudo certo

Que notícia boa! Bem que o angular podia ter uma msg melhor.