هر زمان که یک لوله جدید در Angular ایجاد کنیم، آن لوله یک لوله خالص است. همچنین میتوانیم با قرار دادن ویژگی خالص دکوراتور لوله به ترتیب روی true یا false، لوله را خالص یا ناخالص قرار دهیم.
Angular تنها زمانی یک لوله خالص را اجرا می کند که تغییر خالص را در مقدار ورودی تشخیص دهد. یک تغییر خالص یا است
- تغییر به یک مقدار ورودی اولیه (رشته، عدد، بولی) یا
- یک مرجع شی تغییر یافته (آرایه، تاریخ، شی)
یک لوله خالص اجرا نمی شود اگر ورودی لوله یک نوع مرجع مانند شی باشد و فقط مقادیر ویژگی شی تغییر کند اما مرجع تغییر نکرده است.
بنابراین لولههای خالص سریع هستند، اما استفاده از آنها برای فیلتر کردن دادهها ایده خوبی نیست، زیرا اگر دادههای منبع بدون تغییر در مرجع شیء بهروزرسانی شوند، ممکن است فیلتر آنطور که انتظار میرود کار نکند.
لولههای ناخالص لولههایی هستند که برای هر چرخه تشخیص تغییر اجرا میشوند، حتی اگر تغییری در دادههای منبع وجود نداشته باشد. به همین دلیل لوله های ناخالص از نظر عملکرد بسیار پرهزینه هستند و باید از استفاده از لوله های ناخالص خودداری شود