আমি কৌনিক 2 শিখার চেষ্টা করছি।
আমি @ ভিউচিল্ড এনটোটেশন ব্যবহার করে পিতামাতার উপাদান থেকে কোনও সন্তানের অংশে অ্যাক্সেস করতে চাই ।
কোডের কয়েকটি লাইন এখানে:
ইন BodyContent.ts আমি আছে:
import {ViewChild, Component, Injectable} from 'angular2/core';
import {FilterTiles} from '../Components/FilterTiles/FilterTiles';
@Component({
selector: 'ico-body-content'
, templateUrl: 'App/Pages/Filters/BodyContent/BodyContent.html'
, directives: [FilterTiles]
})
export class BodyContent {
@ViewChild(FilterTiles) ft:FilterTiles;
public onClickSidebar(clickedElement: string) {
console.log(this.ft);
var startingFilter = {
title: 'cognomi',
values: [
'griffin'
, 'simpson'
]}
this.ft.tiles.push(startingFilter);
}
}
যখন FilterTiles.ts :
import {Component} from 'angular2/core';
@Component({
selector: 'ico-filter-tiles'
,templateUrl: 'App/Pages/Filters/Components/FilterTiles/FilterTiles.html'
})
export class FilterTiles {
public tiles = [];
public constructor(){};
}
অবশেষে এখানে টেমপ্লেটগুলি (মতামত হিসাবে প্রস্তাবিত):
BodyContent.html
<div (click)="onClickSidebar()" class="row" style="height:200px; background-color:red;">
<ico-filter-tiles></ico-filter-tiles>
</div>
FilterTiles.html
<h1>Tiles loaded</h1>
<div *ngFor="#tile of tiles" class="col-md-4">
... stuff ...
</div>
ফিল্টারটাইলস এইচটিএমএল টেমপ্লেটটি সঠিকভাবে আইকো -ফিল্টার-টাইলস ট্যাগে লোড করা হয়েছে (প্রকৃতপক্ষে আমি শিরোনামটি দেখতে সক্ষম হয়েছি)।
দ্রষ্টব্য: বডি কনটেন্ট ক্লাসটি ডায়নামিক কমপোনেটলোডার ব্যবহার করে অন্য টেমপ্লেটের (বডি) ভিতরে ইনজেকশনের ব্যবস্থা করা হয়েছে: dcl.loadAsRoot (বডি-কনটেন্ট, '# আইকো-বডি-কনটেন্ট', ইনজেক্টর):
import {ViewChild, Component, DynamicComponentLoader, Injector} from 'angular2/core';
import {Body} from '../../Layout/Dashboard/Body/Body';
import {BodyContent} from './BodyContent/BodyContent';
@Component({
selector: 'filters'
, templateUrl: 'App/Pages/Filters/Filters.html'
, directives: [Body, Sidebar, Navbar]
})
export class Filters {
constructor(dcl: DynamicComponentLoader, injector: Injector) {
dcl.loadAsRoot(BodyContent, '#ico-bodyContent', injector);
dcl.loadAsRoot(SidebarContent, '#ico-sidebarContent', injector);
}
}
সমস্যাটি হ'ল আমি যখন ft
কনসোল লগটিতে লেখার চেষ্টা করি তখন আমি পেয়ে যাই undefined
এবং অবশ্যই যখন আমি "টাইলস" অ্যারের ভিতরে কোনও কিছুর চেষ্টা করি তখন ব্যতিক্রম পাই: '"অপরিজ্ঞাত" জন্য কোনও সম্পত্তি টাইলস নেই ।
আরও একটি জিনিস: ফিল্টারটাইলস উপাদানটি সঠিকভাবে লোড হয়েছে বলে মনে হচ্ছে, যেহেতু আমি এর জন্য এইচটিএমএল টেমপ্লেটটি দেখতে সক্ষম হয়েছি।
যেকোনো পরামর্শ? ধন্যবাদ
ft
কনস্ট্রাক্টরে সেট করা হবে না, তবে একটি ক্লিক ইভেন্ট হ্যান্ডলারটিতে এটি ইতিমধ্যে সেট করা হবে।
loadAsRoot
, যার পরিবর্তন সনাক্তকরণের সাথে একটি জ্ঞাত সমস্যা রয়েছে। ব্যবহার নিশ্চিত করার চেষ্টা করুন loadNextToLocation
বা loadIntoLocation
।
loadAsRoot
। একবার প্রতিস্থাপনের সাথে loadIntoLocation
সমস্যার সমাধান হয়ে গেল। আপনি যদি উত্তর হিসাবে আপনার মন্তব্য করেন তবে আমি এটি গ্রহণযোগ্য হিসাবে চিহ্নিত করতে পারি