কোডে পাইপ ব্যবহার করা কি সম্ভব?


109

যখন আমি আমার কাস্টম পাইপটি কোনও টেম্পলেটে ব্যবহার করি তখন এটি এমন হয়:

{{user|userName}}

এবং এটি ভাল কাজ করে।

কোডে পাইপ ব্যবহার করা কি সম্ভব?

আমি এটি এইভাবে ব্যবহার করার চেষ্টা করি:

let name = `${user|userName}`;

তবে তা দেখায়

ব্যবহারকারী নাম সংজ্ঞায়িত করা হয় না

আমার বিকল্প উপায় db.collection.findOne()কোডটিতে ম্যানুয়ালি ব্যবহার করা হচ্ছে । তবে কি কোনও স্মার্ট উপায় আছে?


আপনি এটির মতো টেমপ্লেট ব্যবহার করতে পারবেন না, আপনাকে পাইপটি আপনার পরিচালক হিসাবে ইনজেক্ট করতে হবে
Yoann Prot

দুঃখিত, আমি এটা পরিষ্কার করব। আমি ইতিমধ্যে পাইপগুলি ইনজেক্ট করেছি
হ্যাংবো মিয়াও

আপনি কোডটিতে কোন পাইপটি ব্যবহার করার চেষ্টা করছেন? এটি কি আপনার কাস্টম পাইপ?
শিভা

4
আমি মনে করি না যেহেতু আপনি ...কৌণিক দ্বারা নির্বাহ করা হয়নি isn't এটি ES6 স্ট্রিং ইন্টারপোলেশন ...
থিয়েরি টেম্পিলার

উত্তর:


118

প্রথমে providersআপনার মডিউলটির পাইপটি ঘোষণা করুন :

import { YourPipeComponentName } from 'your_component_path';

@NgModule({
  providers: [
    YourPipeComponentName
  ]
})
export class YourServiceModule {
}

তারপরে আপনি @Pipeএই জাতীয় উপাদান ব্যবহার করতে পারেন :

import { YourPipeComponentName } from 'your_component_path';

class YourService {

  constructor(private pipe: YourPipeComponentName) {}

  YourFunction(value) {
    this.pipe.transform(value, 'pipeFilter');
  }
}

4
ভাল দেখাচ্ছে! তবে কোনও কারণে নির্ভরতা ইনজেকশনটি আমার পাইপটি কনস্ট্রাক্টারে ইনজেক্ট করতে পারে না, যদিও এটি কোনও সমস্যা ছাড়াই এইচটিএমএলে ব্যবহার করা যেতে পারে। এটি ঘোষিত হয়ে অন্য মডিউলে রফতানি করা হয়, সম্ভবত এটির সরবরাহকারীর তালিকায় থাকাও দরকার? যদিও মাইপাইপের একটি নতুন উদাহরণ তৈরি করা এবং ব্যবহার করা কাজ করে, যদিও। কেবল ডিআই-র সমস্যা আছে ...
স্যাম

19
@ সাম সত্যিই এটির মধ্যে থাকা দরকার providersYouPipeComponentNameআপনার যোগ করুন providersএবং এই পদ্ধতি নিখুঁতভাবে কাজ করবে।
SrAxi

4
এছাড়াও আপনি এটি সঠিক সরবরাহকারীদের সাথে যুক্ত করেছেন তা নিশ্চিত করুন। আপনি যদি বিশ্বব্যাপী পাইপটি ব্যবহার করতে চান তবে এটি অ্যাপ্লিকেশনটিতে রাখুন mod আপনি যদি এটি কেবল কয়েকটি অলস বোঝাই মডিউলগুলিতে ব্যবহার করতে চান তবে এটিকে তাদের নিজ নিজ মডিউলের সরবরাহকারীগুলিতে রাখুন
ফিল

ভুল আমদানির পথ। পাইপ
অদৃশ্য

@ এন্ড্রিস আমি এটি সম্পাদনা করেছি। এটি একটি ভুল ছিল. মানে আপনাকে অবশ্যই আপনার পাইপ মডিউলটি আমদানি করতে হবে।
saghar.fadaei

108

@ শিভা সঠিক। এবং ধন্যবাদ!

সুতরাং উপাদানটিতে পাইপটি ব্যবহার করার উপায়টি এরকম:

let name = new UserNamePipe().transform(user);

অন্য একই প্রশ্নের লিঙ্ক


4
এটি কাজ করে, তবে সম্ভবত এটি কৌণিক সেরা অনুশীলন / পছন্দসই নিদর্শনগুলি অনুসরণ করছে না। উপাদানটি নির্ভরতা হিসাবে পাইপটি কনস্ট্রাক্টরে পাস করা, অন্য উত্তরে প্রদর্শিত হিসাবে এটি "আরও সঠিক"।
জোশ

এইভাবে ব্যবহার করে কোনও পারফরম্যান্স সমস্যা নেই? কিছু লোক এটি সর্বদা ব্যবহার করতে পারে!
মোহাম্মদ করমানি

4
এটি পাইপ ব্যবহারের সম্পূর্ণ ভুল উপায়। পাইপগুলি একটি বিশেষ উদ্দেশ্যে শ্রেণীর এবং এটি কৌণিক দ্বারা সরবরাহিত বিশেষ উপায়ে ব্যবহার করা উচিত। যদি আপনার কোনও পাইপে প্রয়োগ করা কিছু কার্যকারিতা প্রয়োজন হয় তবে এটি নিয়মিত টাইপস্ক্রিপ্ট শ্রেণীর মতো ব্যবহার করার উপায় হয় তবে আপনাকে অবশ্যই এই regularশ্রেণিটি তৈরি করতে হবে এবং এটি আপনার টিএস কোডে ব্যবহার করতে হবে ( your-component.tsউদাহরণস্বরূপ)। পাইপে যদি আপনার একই কার্যকারিতাটির প্রয়োজন হয় তবে আপনি সর্বদা regularপাইপ থেকে সেই শ্রেণিটি ব্যবহার করতে পারেন ।
আলেকজান্ডার অ্যাবাকুমভ

সবচেয়ে বড় পার্থক্য হ'ল আপনি এভাবে ক্লাসের আরও উদাহরণ তৈরি করেন। কৌণিক বাক্য গঠন ব্যবহার করে এটি সিনগেলটনের মতো আচরণ করে এবং একবার মাত্র তাত্ক্ষণিকভাবে চালু হয়।
স্যার 2 বি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.