অ্যাঙ্গুলার 2-তে বন্ধনী, বন্ধনী এবং অ্যাসিরিস্টসের মধ্যে পার্থক্য কী?


151

আমি কৌনিক ওয়েবসাইটটিতে কৌনিক 1 থেকে 2 দ্রুত রেফারেন্সটি পড়ছি এবং একটি জিনিস যা আমি পুরোপুরি বুঝতে পারি নি তা হল এই বিশেষ চরিত্রগুলির মধ্যে পার্থক্য। উদাহরণস্বরূপ, যেটি তারকাচিহ্ন ব্যবহার করে:

<tr *ngFor="#movie of movies">
  <td>{{movie.title}}</td>
</tr>

আমি এখানে বুঝতে পারি যে হ্যাশ (#) চিহ্নটি movieস্থানীয় টেম্পলেট ভেরিয়েবল হিসাবে সংজ্ঞায়িত করে , তবে তারার আগে ngForকী বোঝায়? এবং, এটি প্রয়োজনীয়?

পরবর্তী, বন্ধনী ব্যবহার করে এমন উদাহরণগুলি:

<a [routerLink]="['Movies']">Movies</a>

আমি কিছুটা বুঝতে পারি যে কাছাকাছি বন্ধনীগুলি routerLinkএটিকে এইচটিএমএল বৈশিষ্ট্য / কৌণিক নির্দেশের সাথে আবদ্ধ করে। এর অর্থ কি এই যে এঙ্গুলারের পক্ষে কোনও অভিব্যক্তি মূল্যায়ন করার জন্য তারা পয়েন্টার? ভালো লেগেছে [id]="movieId"সমতুল্য হবে id="movie-{{movieId}}"কৌণিক 1?

শেষ অবধি, প্রথম বন্ধনীগুলি:

<button (click)="toggleImage($event)">

এগুলি কি কেবল ডিওএম ইভেন্টের জন্য ব্যবহৃত হয় এবং আমরা কি অন্যান্য ইভেন্টের মতো (load)="someFn()"বা ব্যবহার করতে পারি (mouseenter)="someFn()"?

আমি অনুমান করি আসল প্রশ্নটি হচ্ছে, এই চিহ্নগুলির কি Angular 2 এ একটি বিশেষ অর্থ রয়েছে এবং প্রতিটিটি কখন ব্যবহার করবেন তা জানার সহজতম উপায় কী ? ধন্যবাদ !!

উত্তর:


153

সমস্ত বিশদ এখানে পাওয়া যাবে: https://angular.io/docs/ts/latest/guide/template-syntax.html

  • directiveName- কাঠামোগত দিকনির্দেশনার জন্য হ্যান্ড হ্যান্ড ফর্ম যেখানে দীর্ঘ ফর্মটি কেবলমাত্র <template>ট্যাগগুলিতে প্রয়োগ করা যেতে পারে । সংক্ষিপ্ত রূপটি উপাদানটিকে জড়িয়ে দেয় যেখানে এটি প্রয়োগ করা হয় <template>।

  • [prop]="value"বৈশিষ্ট্য ( @Input()একটি কৌণিক উপাদান বা দিকনির্দেশক বা একটি ডিওএম উপাদানের একটি সম্পত্তি) এর সাথে আবদ্ধ বস্তুর জন্য ।
    বিশেষ ফর্ম রয়েছে:

    • [class.className] এটি সক্ষম / অক্ষম করতে একটি CSS শ্রেণীর সাথে জড়িত
    • [style.stylePropertyName] একটি শৈলীর সম্পত্তিতে আবদ্ধ
    • [style.stylePropertyName.px] একটি প্রিসেট ইউনিট সহ একটি শৈলীর সম্পত্তিতে আবদ্ধ
    • [attr.attrName] একটি মানকে একটি গুণকে আবদ্ধ করে (DOM এ দৃশ্যমান, যখন বৈশিষ্ট্যগুলি দৃশ্যমান হয় না)
    • [role.roleName] এআরআইএ রোল অ্যাট্রিবিউটের সাথে আবদ্ধ (এখনও উপলব্ধ নয়)
  • prop="{{value}}"কোনও সম্পত্তির সাথে একটি মানকে বেঁধে রাখে। মানটি স্ট্রিংফাইড হয়েছে (ওরফে ইন্টারপোলেশন)

  • (event)="expr"ইভেন্ট হ্যান্ডলারকে একটি @Output()বা ডিওএম ইভেন্টের সাথে আবদ্ধ করে

  • #varবা #varপ্রসঙ্গ উপর নির্ভর করে বিভিন্ন ফাংশন আছে

    • একটি *ngFor="#x in y;#i=index"স্কোপে পুনরাবৃত্তির জন্য ভেরিয়েবলগুলি তৈরি করা হয়
      (বিটা .১ this এ এটিকে * এনজিফোর্স = "y এ x দেওয়া যাক; i = সূচক" to) এ পরিবর্তন করা হয়)
    • একটি ডোম উপাদানটিতে উপাদানটির <div #mydiv>একটি রেফারেন্স
    • একটি কৌণিক উপাদানটিতে উপাদানটির একটি রেফারেন্স
    • এমন একটি উপাদানের উপর যা একটি কৌণিক উপাদান বা একটি কৌণিক নির্দেশিকা যেখানে exportAs:"ngForm"সংজ্ঞায়িত হয়, #myVar="ngForm"এই উপাদান বা নির্দেশের একটি রেফারেন্স তৈরি করে।

14
অথবা bind-জন্য []এবং on-জন্য ()অথবা <template [ngFor]>জন্য *ngFor।
— গন্টার জ্যাচবাউয়ার

7
[(এনজিমোডেল)] এর অর্থ বর্গাকার বন্ধনীগুলির মধ্যে বন্ধনী মানে কী?
— উসমান

14
দুটি উপায় (একটি box6 মধ্যে "কলা বলা হয়) বাঁধাই। এটা (অথবা সংক্ষিপ্ত রূপকে) সমন্বয় [ngModel]="foo" (ngModelChange)="foo = $event"যেখানে প্রথম অংশ আপডেট ngModelসম্পত্তি ( @Input() ngModel;এর NgModelনির্দেশ ) when foo` পরিবর্তন এবং 2nd অংশ আপডেট fooযখন @Output() ngModelChange;(এর NgModelনির্দেশিকা) । নির্গত একটি ইভেন্ট NgModelবেঁধে মান উপাদান এবং উপাদান গঠন করতে ব্যবহৃত হয়। [(bar)]কোনো ব্যবহার করা যেতে পারে @Input() bar; @Output() barChange;, আপনার নিজের উপাদান সমন্বয় এছাড়াও।
— গুন্টার Zöchbauer

2
@ GünterZöchbauer মধ্যে পার্থক্য কি [prop]="value"এবং prop="{{value}}"বাক্য গঠন ছাড়া অন্য কিছু? উভয়ই উপাদানতে মান পাস করতে পারে @Input() value;।
— ডাইপিক্স

3
@ ডাইপিক্স যে [prop]="value"কোনও ধরণের মান নির্ধারণ করতে পারে, অ্যাসাইনমেন্টের আগে prop="{{value}}"সর্বদা স্ট্রিংফাই করে valueএবং তাই অবজেক্টগুলি পাস করার জন্য অকেজো।
— গন্টার জ্যাচবাউয়ার

51

[]- লক্ষ্য দেখার জন্য ডেটা উত্স থেকে সম্পত্তি একত্রে বাধ্যতামূলক । যেমন

{{expression}}
[target]="expression"
bind-target="expression"

এর পরিবর্তে আমরা বাইন্ড ব্যবহার করতে পারি []

()-> ইভেন্ট উত্সকে লক্ষ্য উত্স থেকে ডেটা উত্স পর্যন্ত একমুখী inding

(target)="statement"
on-target="statement"

আমরা () এর পরিবর্তে অন ব্যবহার করতে পারি

[()]- একটি বাক্সে দ্বিপথ বাঁধাই কলা

[(target)]="expression"
bindon-target="expression"

এর পরিবর্তে আমরা বিনডন ব্যবহার করতে পারি [()]


20

ইতিমধ্যে উল্লিখিত হিসাবে, কৌণিক ডকুমেন্টেশন, বিশেষত "নায়ক টিউটোরিয়াল", এটি আরও গভীরভাবে ব্যাখ্যা করে। আপনি যদি এটি পরীক্ষা করে দেখতে চান তবে লিঙ্কটি এখানে ।

প্যারেনথেসিসগুলি আপনি যে উপাদানটির উপর কাজ করছেন তার ঘটনাগুলি যেমন আপনার উদাহরণের মতো একটি বোতামে ক্লিক করুন; এটি মৌসাউন্ড, কীআপ, অনিসিলেক্ট বা কোনও উপাদান / ইভেন্টের জন্যও হতে পারে এবং কলটির =জন্য প্রথম বন্ধনী ব্যবহার করে কল করার পদ্ধতিটির নাম what এই পদ্ধতিটি আপনার উপাদান শ্রেণিতে সংজ্ঞায়িত করা উচিত, অর্থাত:

<element (event)="method()"></element>

বন্ধনী অন্যভাবে কাজ করে। তারা আপনার শ্রেণি থেকে ডেটা পাবে - ইভেন্টটি পাঠাচ্ছে এমন প্রথম বন্ধনীগুলির বিপরীতে - সুতরাং সাধারণ উদাহরণটি হ'ল এর মতো শৈলীর ব্যবহার:

<element [ngStyle]="{display:someClassVariable}">

দেখা? আপনি আপনার মডেল / শ্রেণির উপর ভিত্তি করে উপাদানটিকে একটি স্টাইল দিচ্ছেন।

এর জন্য আপনি ব্যবহার করতে পারতেন ...

<element style="display:{{ModelVariable}};">

পুনঃসংশোধনটি হ'ল আপনি যে জিনিসগুলি স্ক্রিনে মুদ্রণ করবেন সেগুলির জন্য আপনি দ্বিগুণ কোঁকড়ানো বন্ধনী ব্যবহার করেন:

<h1>{{Title}}</h1>

আপনি যা ব্যবহার করুন না কেন, আপনি যদি সামঞ্জস্য বজায় রাখেন তবে এটি আপনার কোডের পঠনযোগ্যতায় সহায়তা করবে।

শেষ অবধি, আপনার *প্রশ্নের জন্য এটি দীর্ঘতর ব্যাখ্যা, তবে এটি খুব গুরুত্বপূর্ণ: এটি কিছু পদ্ধতির বাস্তবায়নকে বিমূর্ত করে তোলে যা অন্যথায় আপনাকে ngForকাজ করার জন্য করতে হবে ।

একটি গুরুত্বপূর্ণ আপডেট হ'ল ngForআপনি এখন আর হ্যাশ ব্যবহার করবেন না; letপরিবর্তে আপনাকে নিম্নলিখিত হিসাবে ব্যবহার করতে হবে:

<tr *ngFor="let movie of movies">
    <td>{{movie.title}}</td>
</tr>

একটি সর্বশেষ উল্লেখযোগ্য বিষয় হ'ল উপরের সমস্তগুলি আপনার উপাদানগুলির জন্যও প্রযোজ্য, যেমন আপনি যদি নিজের উপাদানটিতে কোনও পদ্ধতি তৈরি করেন তবে এটি ব্যবহার করে ডাকা হবে ():

<my-owncomponent 
    (onSearched)="MethodToCall()" 
    [MyInputData]="SearchParamsArray"></my-owncomponent>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.