#angular
Вопрос:
Я сделал импорт в BrowserModule и в ReactiveFormsModule, но все равно получил эту ошибку привязки.
Я использую государственную службу для получения массива prudcts с сервера..
Это домашний компонент
<div class="product-container" *ngFor="let product of stateService.products| category:stateService.categoryId">
<app-products-card [product]="product"></app-products-card>
</div>
Это из дома.ts
export class HomeComponent implements OnInit {
products: IProducts[] = []
constructor(
public stateService: StateService,
public productServices: ProductService,
private router: Router,
private route: ActivatedRoute,
) { }
Это компонент продукта
<div class="card productsCard" style="width: 18rem">
<img
[src]="product.image"
alt="{{ product.productName }}"
width="250px"
class="card-img-top"
style="cursor: pointer"
/>
<div class="card-body">
<h5 class="card-title">{{ product.productName | titlecase }}</h5>
<p class="card-text"> {{ product.price }}</p>
<a *ngIf="stateService.isLoggedIn amp;amp; !isAddToCartBtnClicked" href="#" class="btn btn-primary">ADD</a>
<div *ngIf="isAddToCartBtnClicked">
Amount: <input type="number" [(ngModel)]="amount"/>
</div>
</div>
</div>
Импорт:
@NgModule({
imports: [
BrowserModule,
ReactiveFormsModule,
RoutingModule,
BrowserAnimationsModule,
MDBBootstrapModule.forRoot(),
HttpClientModule,
FormsModule,
TableModule,
],
providers: [],
bootstrap: [AppComponent]
})
Комментарии:
1. можете ли вы предоставить файл ts компонента, который может помочь
2. Возможно, это происходит из-за того, что служба является частной, и вы получаете к ней доступ из шаблона, почему вы не помещаете stateService.products в переменную/свойство,
3. является ли продукт компонентом @input в карточке приложений-продуктов ?
4. Я добавляю сегмент из home.ts , и что вы имеете в виду, если продукт является @input ?
5. Это официальные документы angular.io/guide/inputs-outputs и это пример guide-angular.wishtack.io/angular/interaction-entre-composants/…
Ответ №1:
Вам нужно добавить @Input() в свой AppProductsCardComponent
export class AppProductsCardComponent implements OnInit {
@Input() product: IProducts; //Add @Input()
constructor(
public stateService: StateService,
public productServices: ProductService,
private router: Router,
private route: ActivatedRoute,
) { }
Комментарии:
1. Да , вот и все, я добавил @Input в свой AppProductsCardКомпонент, и это было исправлено. Большое спасибо!
Ответ №2:
Добавьте в product.component.ts @Input() продукт; С уважением.
Ответ №3:
Похоже , что в AppProductCardComponent
, вы пропустили добавление продукта в качестве Input
поля. С помощью Angular вы можете передавать значение компоненту только в том случае, если вы добавили поле ввода() в тот компонент, которому требуется передать значение из родительского компонента.
Как показано ниже:
@Component({
selector: 'app-demo-comp',
template: '<div>{{msg}}</div>
})
class DemoComponent {
@Input() msg: string;
}
Вот как вы можете его использовать: <app-demo-comp [msg]="'demo'"></app-demo-comp>